gpt4 book ai didi

sharepoint - ChatBot 从 SharePoint On Premise 问题中检索数据

转载 作者:行者123 更新时间:2023-12-04 10:53:11 25 4
gpt4 key购买 nike

我开发了一个与 SharePoint on Premise 通信的聊天机器人,

当我在模拟器中运行聊天机器人时。

但是当我在 SharePoint 外部托管的 Web 上运行时,它不起作用。

这是我在 Azure 上的错误截图,从错误的结果是从 XMLReader 和 SyndicationFeed 开始
enter image description here

本地模拟器的成功
enter image description here

附上我的源代码。

 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());
}

}

任何解决方案和建议?

最佳答案

好的,我想我终于明白了这一点,所以希望可以把有用的回复放在一起。如果我们有一个共享的白板会容易得多:-)

基本上,就在 Microsoft Bot Framework Services 上托管机器人而言,您需要在 Azure 中进行注册。但是,有两种不同的选择,并且在托管方面都非常不同。当您在 Azure 中“创建”资源并搜索“Bot”时,您将看到两个选项 - “Web App Bot”和“Bot Channels Registration”:

  • “机器人 channel 注册”意味着只需在 Azure 中注册您的机器人,但将其托管在其他地方。
  • “Web App Bot” - 包括“Bot Channels Registration”,但还添加了使用 Azure Web 应用程序的托管(因此它是 Bot 注册 PLUS 托管)

  • 从您发布的屏幕截图中,我可以看到您选择了上面的 (2),因此您的机器人是 跑在里面 Azure,因此无法连接到本地资源 (SharePoint)。

    因此,我建议两种选择之一:
  • 创建 Azure Application Proxy - 这基本上是一个小型网关,以便您在 Azure 中托管的机器人可以安全地与您的本地 SharePoint 对话。其实还有a specific use case for SharePoint特别是。
  • 删除并重新创建 Azure Bot 条目,改为仅作为“机器人 channel 注册”,然后在“设置”屏幕中,您可以调用托管在任何“https”端点上的机器人。然后你可以让你的机器人运行 在本地网络 ,但它需要一个实时的“https”地址(并不难,但您必须让您的 IT 团队参与以获得实时网址,例如“whatever.aspac.com”,并且您需要一个SSL/TLS 证书,以便它可以运行 httpS 而不仅仅是 http。

  • 您选择哪个选项可能取决于您的团队以及组织中的技能和资源。例如,公司可能已经配置了 Azure 应用程序代理,在这种情况下可以节省大量工作。它可能有一个通配符证书,这将使选项 (2) 更容易,等等。

    无论哪种方式,我都希望有所帮助,但如果仍有任何不清楚的地方,请随时询问更多。

    关于sharepoint - ChatBot 从 SharePoint On Premise 问题中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59368817/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com