如何在MicrosoftBot框架中进行RESTAPI调用
我需要一个机器人,它接受用户输入,将其用作某个第三方RESTAPI调用的id,并发回响应。我查阅了Microsoft文档,但没有找到任何关于如何编写请求-响应过程的示例如何在MicrosoftBot框架中进行RESTAPI调用,rest,botframework,Rest,Botframework,我需要一个机器人,它接受用户输入,将其用作某个第三方RESTAPI调用的id,并发回响应。我查阅了Microsoft文档,但没有找到任何关于如何编写请求-响应过程的示例 任何示例或有用的链接都将不胜感激正如Ashwin所说,bot只是一个web API,您只需发送/接收请求,就像使用任何web API一样。下面是一些可以帮助您开始的文档 在Jason的回答中,由于您想进行REST api调用,请查看以下代码: public class RootDialog : IDialog<obje
任何示例或有用的链接都将不胜感激正如Ashwin所说,bot只是一个web API,您只需发送/接收请求,就像使用任何web API一样。下面是一些可以帮助您开始的文档
在Jason的回答中,由于您想进行REST api调用,请查看以下代码:
public class RootDialog : IDialog<object>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
return Task.CompletedTask;
}
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
// User message
string userMessage = activity.Text;
try
{
using (HttpClient client = new HttpClient())
{
//Assuming that the api takes the user message as a query paramater
string RequestURI = "YOUR_THIRD_PARTY_REST_API_URL?query=" + userMessage ;
HttpResponseMessage responsemMsg = await client.GetAsync(RequestURI);
if (responsemMsg.IsSuccessStatusCode)
{
var apiResponse = await responsemMsg.Content.ReadAsStringAsync();
//Post the API response to bot again
await context.PostAsync($"Response is {apiResponse}");
}
}
}
catch (Exception ex)
{
}
context.Wait(MessageReceivedAsync);
}
}
public类RootDialog:IDialog
{
公共任务StartSync(IDialogContext上下文)
{
Wait(MessageReceivedAsync);
返回Task.CompletedTask;
}
专用异步任务消息ReceivedAsync(IDialogContext上下文,IAwaitable结果)
{
var活动=等待作为活动的结果;
//用户消息
字符串userMessage=activity.Text;
尝试
{
使用(HttpClient=new HttpClient())
{
//假设api将用户消息作为查询参数
string RequestURI=“您的第三方”\u REST\u API\u URL?query=“+userMessage;
HttpResponseMessageResponseMsg=await client.GetAsync(请求URI);
if(ResponseMSG.IsSuccessStatusCode)
{
var apisresponse=await responsemsg.Content.ReadAsStringAsync();
//再次将API响应发布到bot
wait context.PostAsync($“Response is{apisponse}”);
}
}
}
捕获(例外情况除外)
{
}
Wait(MessageReceivedAsync);
}
}
一旦从用户那里获得输入,您就可以进行REST调用,然后在从API获得响应后,使用
context.PostAsync
方法将其发回给用户。这与在任何C#应用程序中进行web请求相同。不过我可以提供一个样品。它是GET请求还是POST请求?它是GET请求