ChatBot从SharePoint内部部署问题检索数据
我开发了一个聊天机器人,可以与SharePoint进行内部通信 当我在模拟器中运行聊天机器人时 但当我运行在SharePoint之外托管的Web时,它就不起作用了 下面是我在Azure上的错误截图,错误的结果是从XMLReader和SyndicationFeed开始的 在本地仿真器中的成功 随信附上我的来源代码ChatBot从SharePoint内部部署问题检索数据,sharepoint,botframework,azure-bot-service,Sharepoint,Botframework,Azure Bot Service,我开发了一个聊天机器人,可以与SharePoint进行内部通信 当我在模拟器中运行聊天机器人时 但当我运行在SharePoint之外托管的Web时,它就不起作用了 下面是我在Azure上的错误截图,错误的结果是从XMLReader和SyndicationFeed开始的 在本地仿真器中的成功 随信附上我的来源代码 private async Task ProcessRSSAsync(ITurnContext<IMessageActivity> turnContext, LuisR
private async Task ProcessRSSAsync(ITurnContext<IMessageActivity> turnContext, LuisResult luisResult, string intent, CancellationToken cancellationToken)
{
var questionluis = turnContext.Activity.Text;
await turnContext.SendActivityAsync("intent recognize" + intent);
var intentresut = intent;
await turnContext.SendActivityAsync("Get LUIS Entity");
await turnContext.SendActivityAsync(string.Join("\t", luisResult.Entities.Select((entityObj) => entityObj.Entity)));
var entityfound = string.Join("\t", luisResult.Entities.Select((entityObj) => entityObj.Entity));
string spxurl = @"https://intra.aspac.com/sites/sg/daw/_layouts/15/srchrss.aspx?k=*%20ListId:7BC0F2C3-6366-48B8-B88A-8738BE1F9C31";
await turnContext.SendActivityAsync("Intent: " + intent.ToString() + " Entity: " + entityfound.ToString());
////---------------------------------------------------------------------------------------------
//22112019
try
{
//#ES09122019
var credentials = new NetworkCredential("email@example.com", "Pa$$w0rd", "sg.kworld.com");
var handler = new HttpClientHandler { Credentials = credentials, UseDefaultCredentials = false };
var client = new HttpClient(handler);
client.BaseAddress = new Uri("https://intra.aspac.com/sites/sg/daw/");
HttpResponseMessage resp = client.GetAsync("_layouts/15/srchrss.aspx?k=" + entityfound + "*%20ListId:7BC0F2C3-6366-48B8-B88A-8738BE1F9C31").Result;
string respString = resp.Content.ReadAsStringAsync().Result;
if (resp.StatusCode == HttpStatusCode.OK)
{
await turnContext.SendActivityAsync("Connected");
//Success 06122019 .
try
{
string spurl = @"https://intra.aspac.com/sites/sg/daw/_layouts/15/srchrss.aspx?k=*%20ListId:7BC0F2C3-6366-48B8-B88A-8738BE1F9C31";
XmlSecureResolver resolver = new XmlSecureResolver(new XmlUrlResolver(), spurl);
resolver.Credentials = new NetworkCredential("email@example.com.sg", "Pa$$w0rd", "sg.kworld.com");
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
settings.XmlResolver = resolver;
XmlReader reader = XmlReader.Create(spurl, settings);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();
var attachments = new List<Attachment>();
foreach (SyndicationItem item in feed.Items)
{
//Get Title,Description,URL
String title = item.Title.Text;
String description = item.Summary.Text;
String link = item.Links.FirstOrDefault().Uri.ToString();
//Hero Card
var heroCard = new HeroCard(
title: item.Title.Text,
// subtitle: description,
buttons: new CardAction[]
{
new CardAction(ActionTypes.OpenUrl,"Learn More",value:link)
}
).ToAttachment();
attachments.Add(heroCard);
}
var reply = MessageFactory.Carousel(attachments);
await turnContext.SendActivityAsync(reply);
await ProcessCosmoDBStorageLUISAsync(turnContext, questionluis, intent, entityfound, respString, cancellationToken);
}
catch (Exception ex)
{
await turnContext.SendActivityAsync(ex.ToString());
}
}
}
catch (Exception ex)
{
await turnContext.SendActivityAsync("Sorry,Currently Server Under Maintenace");
await turnContext.SendActivityAsync(ex.ToString());
}
}
private async任务进程同步(ITurnContext turnContext、LuisResult LuisResult、string intent、CancellationToken CancellationToken)
{
var questionluis=turnContext.Activity.Text;
等待turnContext.SendActivityAsync(“意图识别”+意图);
var intentresut=意图;
等待turnContext.SendActivityAsync(“获取LUIS实体”);
等待turnContext.SendActivityAsync(string.Join(“\t”,luisResult.Entities.Select((entityObj)=>entityObj.Entity));
var entityfound=string.Join(“\t”,luisResult.Entities.Select((entityObj)=>entityObj.Entity));
字符串spxurl=@”https://intra.aspac.com/sites/sg/daw/_layouts/15/srchrss.aspx?k=*%20列表ID:7BC0F2C3-6366-48B8-B88A-8738BE1F9C31”;
等待turnContext.SendActivityAsync(“意图:+Intent.ToString()+”实体:+entityfound.ToString());
////---------------------------------------------------------------------------------------------
//22112019
尝试
{
//#ES09122019
var凭据=新的网络凭据(“email@example.com“,“Pa$$w0rd”,“sg.kwold.com”);
var handler=newhttpclienthandler{Credentials=Credentials,UseDefaultCredentials=false};
var client=新的HttpClient(处理程序);
client.BaseAddress=新Uri(“https://intra.aspac.com/sites/sg/daw/");
httpresponsemessageresp=client.GetAsync(“_layouts/15/srchrss.aspx?k=“+entityfound+”*%20ListId:7BC0F2C3-6366-48B8-B88A-8738BE1F9C31”)。结果;
字符串respString=resp.Content.ReadAsStringAsync().Result;
if(resp.StatusCode==HttpStatusCode.OK)
{
等待turnContext.SendActivityAsync(“已连接”);
//成功06122019。
尝试
{
字符串spurl=@”https://intra.aspac.com/sites/sg/daw/_layouts/15/srchrss.aspx?k=*%20列表ID:7BC0F2C3-6366-48B8-B88A-8738BE1F9C31”;
XmlSecureSolver解析器=新的XmlSecureSolver(新的XmlUrlResolver(),spurl);
resolver.Credentials=新的网络凭据(“email@example.com.sg“,“Pa$$w0rd”,“sg.kwold.com”);
XmlReaderSettings设置=新建XmlReaderSettings();
settings.DtdProcessing=DtdProcessing.Parse;
settings.ValidationType=ValidationType.DTD;
settings.xmlsolver=解析程序;
XmlReader=XmlReader.Create(spurl,设置);
SyndicationFeed=SyndicationFeed.Load(读卡器);
reader.Close();
var attachments=新列表();
foreach(feed.Items中的SyndicationItem项目)
{
//获取标题、描述、URL
字符串标题=item.title.Text;
字符串说明=item.Summary.Text;
String link=item.Links.FirstOrDefault().Uri.ToString();
//英雄牌
var heroCard=新heroCard(
标题:item.title.Text,
//副标题:描述,,
按钮:新CardAction[]
{
新的CardAction(ActionTypes.OpenUrl,“了解更多”,值:link)
}
).ToAttachment();
附件.添加(heroCard);
}
var reply=MessageFactory.Carousel(附件);
等待turnContext.SendActivityAsync(回复);
等待进程CosmodStorage LuisAsync(turnContext、questionluis、intent、entityfound、respString、cancellationToken);
}
捕获(例外情况除外)
{
等待turnContext.SendActivityAsync(例如ToString());
}
}
}
捕获(例外情况除外)
{
等待turnContext.SendActivityAsync(“对不起,当前服务器正在维护”);
等待turnContext.SendActivityAsync(例如ToString());
}
}
对此有什么解决方案和建议吗?我在使用内部数据库时遇到了类似的问题。当您在外部部署bot时,bot需要internet上可用的、内部不包含的资源。使用bot仿真器可以很好地工作,因为它可以访问您的机器所拥有的内容 尽管如此,azure已经开发了一些可以用来帮助解决此问题的操作。如果您查看应用程序代理,这可能会对您有所帮助
我想这就是你的意思。。。无论如何 好吧,我想我终于更好地理解了这一点,所以希望我能给出一个有用的答复。如果我们有一个共享的白板会容易得多:-) 基本上,就在Microsoft bot Framework服务上托管bot而言,您需要在Azure中注册。然而,有两种不同的选择,并且在托管方面都有很大的不同。当您在Azure中“创建”资源并搜索“Bot”时,您将看到两个选项-“Web应用程序Bot”和“Bot频道注册”: