如何在MicrosoftBot框架中进行RESTAPI调用

如何在MicrosoftBot框架中进行RESTAPI调用,rest,botframework,Rest,Botframework,我需要一个机器人,它接受用户输入,将其用作某个第三方RESTAPI调用的id,并发回响应。我查阅了Microsoft文档,但没有找到任何关于如何编写请求-响应过程的示例 任何示例或有用的链接都将不胜感激正如Ashwin所说,bot只是一个web API,您只需发送/接收请求,就像使用任何web API一样。下面是一些可以帮助您开始的文档 在Jason的回答中,由于您想进行REST api调用,请查看以下代码: public class RootDialog : IDialog<obje

我需要一个机器人,它接受用户输入,将其用作某个第三方RESTAPI调用的id,并发回响应。我查阅了Microsoft文档,但没有找到任何关于如何编写请求-响应过程的示例


任何示例或有用的链接都将不胜感激

正如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请求