ChatBot không hoạt động trong Trình giả lập web nhưng hoạt động tốt trong trình giả lập Local Bot Framework


9

Tôi đã phát triển ChatBot tích hợp với SharePoint On Premise. Khi tôi gỡ lỗi ChatBot trong trình giả lập, nó hoạt động. Nhưng khi tôi gỡ lỗi trên Trình giả lập web trong Azure và Trang web được lưu trữ trong Trang web của Công ty bằng cách sử dụng DirectLine, nó không hoạt động.

Có ai biết làm thế nào để giải quyết nó?

Dưới đây là ảnh chụp màn hình của tôi. Phía bên tay trái là từ Trình mô phỏng web, Phía bên phải là từ Trình mô phỏng Bot Framework cục bộ

nhập mô tả hình ảnh ở đây

Cập nhật với Mã nguồn (09 tháng 12 năm 2019)

XmlNamespaceManager xmlnspm = new XmlNamespaceManager(new NameTable());

Uri sharepointUrl = new Uri("https://mvponduty.sharepoint.com/sites/sg/daw/");

xmlnspm.AddNamespace("atom", "http://www.w3.org/2005/Atom");
xmlnspm.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
xmlnspm.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");

NetworkCredential cred = new System.Net.NetworkCredential("engsooncheah@mvponduty.onmicrosoft.com", "Pa$$w0rd", "mvponduty.onmicrosoft.com");

HttpWebRequest listRequest = (HttpWebRequest)HttpWebRequest.Create(sharepointUrl.ToString() + "_api/lists/getByTitle('" + "data@work" + "')/items?$filter=Keywords%20eq%20%27bloomberg%27");
listRequest.Method = "GET";
listRequest.Accept = "application/atom+xml";
listRequest.ContentType = "application/atom+xml;type=entry";

listRequest.Credentials = cred;
//LINE 136 start from below
HttpWebResponse listResponse = (HttpWebResponse)listRequest.GetResponse();
StreamReader listReader = new StreamReader(listResponse.GetResponseStream());
XmlDocument listXml = new XmlDocument();

listXml.LoadXml(listReader.ReadToEnd());

if (listResponse.StatusCode == HttpStatusCode.OK)
{
    Console.WriteLine("Connected");
    await turnContext.SendActivityAsync("Connected");
}

// Get and display all the document titles.
XmlElement root = listXml.DocumentElement;
XmlNodeList elemList = root.GetElementsByTagName("content");
XmlNodeList elemList_title = root.GetElementsByTagName("d:Title");
XmlNodeList elemList_desc = root.GetElementsByTagName("d:Description");

//for LINK
XmlNodeList elemList_Id = root.GetElementsByTagName("d:Id");
XmlNodeList elemList_Source = root.GetElementsByTagName("d:Sources");
XmlNodeList elemList_ContentTypeId = root.GetElementsByTagName("d:ContentTypeId");

var attachments = new List<Attachment>();
for (int i = 0; i < elemList.Count; i++)
{

    string title = elemList_title[i].InnerText;
    string desc = elemList_desc[i].InnerText;

    string baseurllink = "https://mvponduty.sharepoint.com/sites/sg/daw/Lists/data/DispForm.aspx?ID=";
    string LINK = baseurllink + elemList_Id[i].InnerText + "&Source=" + elemList_Source[i].InnerText + "&ContentTypeId=" + elemList_ContentTypeId[i].InnerText;

    //// Hero Card
    var heroCard = new HeroCard(
        title: title.ToString(),
        text: desc.ToString(),

        buttons: new CardAction[]
        {
            new CardAction(ActionTypes.OpenUrl,"LINK",value:LINK)
        }
    ).ToAttachment();
    attachments.Add(heroCard);
}
var reply = MessageFactory.Carousel(attachments);
await turnContext.SendActivityAsync(reply);

Cập nhật ngày 17 tháng 12 năm 2019

Tôi đã thử sử dụng Embedded và Direct Line. Nhưng Lỗi vẫn như cũ.

Bot không được lưu trữ trong SharePoint.

Cập nhật ngày 06 tháng 1 năm 2020 Nó không hoạt động trong Azure Bot Services


Theo trình giả lập web, bạn có nghĩa là tính năng Kiểm tra trong Trò chuyện trên web? Hoặc là một gói webchat đầy đủ / thực hiện. Điều này có được lưu trữ trong trang SharePoint / webpart / spfx không?
Dana V

@DanaV, vâng. Trình giả lập web nằm trong trình giả lập Web Azure và cũng sử dụng đường thẳng trong webchat trong một trang web khác. Chatbot không được lưu trữ tại trang SharePoint.
Eng Soon Cheah

Câu trả lời:


4

Dựa trên mô tả của bạn, bạn có thể tìm nạp dữ liệu từ nó cục bộ. Điều này có nghĩa là mã và logic của bạn đều ổn.

Tôi nhận thấy rằng URL sharepoint của bạn là: https://mvponduty.sharepoint.com/sites/sg/daw/và tôi đã cố gắng truy cập nó và cũng đã cố gắng truy cập toàn bộ URL yêu cầu của bạn: https://mvponduty.sharepoint.com/sites/sg/daw/_api/lists/getByTitle('data@work')/items?$filter=Keywords eq 'bloomberg'phản hồi của cả hai đều là 404.

Và bạn nói đây là một trang web tại chỗ, vì vậy bạn có thể kiểm tra xem trang web này có thể truy cập được từ mạng công cộng không?

Tôi giả sử khi bạn kiểm tra mã của mình cục bộ, bạn có thể truy cập trang web này vì bạn đang ở trong mạng nội bộ của mình để có thể truy cập trang web tại chỗ. Tuy nhiên, khi bạn xuất bản mã của mình lên Azure, nó không còn hoạt động nội bộ nữa: nó nằm trong mạng công cộng để không thể truy cập trang web sharePoint tại chỗ của bạn gây ra lỗi này.

Như chúng ta đã biết, mã bot được lưu trữ trên dịch vụ ứng dụng Azure, nếu lỗi này do nguyên nhân trên, có thể tính năng Kết nối kết hợp dịch vụ ứng dụng Azure sẽ hữu ích trong trường hợp này.


Chính xác, truy xuất dữ liệu từ Internal SharePoint. Tôi có nên xuất bản ChatBot trong SharePoint nội bộ không?
Eng Soon Cheah

Xin chào @EngSoonCheah dựa trên người sẽ sử dụng bot này, nếu nó chỉ dành cho người dùng mạng nội bộ của bạn, về mặt lý thuyết, bạn có thể xuất bản nó trong mạng trang SharePoint của bạn. Nếu người dùng bên ngoài cần truy cập, bạn nên xuất bản nó dịch vụ bot azure và sử dụng tính năng kết nối lai của dịch vụ ứng dụng Azure (dịch vụ bot Azure dựa trên dịch vụ ứng dụng Azure) để kết nối dịch vụ ứng dụng bot của bạn với trang web địa phương. Tôi nghĩ rằng tài liệu này sẽ hữu ích: azuregems.io/azure-hy điều
Stanley Gong

Xin chào @EngSoonCheah, mọi chuyện thế nào? Vấn đề của bạn đã được giải quyết chưa?
Stanley Gong

vẫn đang thử kết nối Azure Hybrid.
Eng Soon Cheah

@EngSoonCheah, À ... tôi hiểu rồi. Chúc may mắn, nếu có bất kỳ cập nhật nào, xin vui lòng cho tôi biết :)
Stanley Gong

2

ChatBot dường như đang hoạt động tốt? đó là gửi và nhận tin nhắn. Có một số mã bạn có hành vi khác nhau khi chạy cục bộ so với lưu trữ. Có Xml, nó là một tập tin hay được tạo ra? Bạn cần kiểm tra xem nó có tuân theo cùng logic không và sử dụng cùng một dữ liệu như khi nó được chạy cục bộ. Có thể nếu bạn dán một số mã (không bảo mật) khi mã bị treo, chúng tôi có thể có thêm ý tưởng về cách trợ giúp


Tôi đã cập nhật với Mã nguồn.
Eng Soon Cheah

Lỗi bắt đầu ở dòng 136 trong DispatchBot.cs. Đó là dòng nào? cần phải xem dòng 136 của phương thức này ProcessRSSAsync
xóa

Tôi đã cập nhật mã nguồn, LINE 136 từ HttpWebResponse
Eng Soon Cheah

Đồng ý. Có vẻ như tại địa phương bạn có thể truy cập RSS sharepoint tốt, nhưng khi được lưu trữ, nó không trả lại cùng một xml, điều đó có nghĩa là rất có thể nó sẽ trả về một trang lỗi HTML. Tôi đã tìm kiếm lỗi của bạn và tìm thấy lỗi này: forum.asp.net/t/ Từ Nó gợi ý rằng bạn có thể cần sử dụng Proxy, vui lòng thử mẫu mã trong liên kết đó
xóa

Hiển thị lỗi: System.Pl PlatformNotSupportedException: Thao tác không được hỗ trợ trên nền tảng này.
Eng Soon Cheah

2

Khi bạn xuất bản bot của mình, sẽ có một tùy chọn như dưới đây:

Hình ảnh

Chọn Chỉnh sửa cài đặt dịch vụ ứng dụng. Chỉ thêm các chi tiết sau đây, không có gì khác:

MicrosoftAppId : <xxxxx>
MicrosoftAppPassword : <xxxxx>

Nhấp vào Áp dụng, Ok.

Hãy chắc chắn rằng bạn xóa Microsoft App IdMicrosoft App Passwordkhỏi appsinstall.json, để nó cũng hoạt động trong trình giả lập bot.

Bây giờ Xuất bản bot. Nó sẽ làm việc ở cả hai nơi.

Hy vọng điều này là hữu ích.


Tôi chỉ thấy Bản xem trước và Định cấu hình vì tôi tải xuống Mã nguồn ChatBot từ Azure Portal.
Eng Soon Cheah
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.