받은 봇 빌더를 사용하여받은 메시지를 webhook 끝점으로 보내 봇을 만들고 싶습니다. 나는 주위를 검색하는 것으로부터 발견 된 몇 가지 예제를 결합하려했지만 아무 소용이 없다. 나는 텍스트의 가치와 JSON 페이로드로은 webhook에 사용자가 입력 한 텍스트를 보내 도움이 필요, 여기에 내가 지금 가지고있는 코드입니다 :Microsoft Bot Builder activity.text REST를 JSON 페이로드로 사용하여 POST로 webhook에 게시
using System;
using System.Net;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
using System.Web.Script.Serialization;
namespace Bot_Application1.Dialogs
{
[Serializable]
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;
// calculate something for us to return
int length = (activity.Text ?? string.Empty).Length;
// return our reply to the user
await context.PostAsync($"You sent {activity.Text} which was {length} characters");
//
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://outlook.office.com/webhook/.../IncomingWebhook/.../...");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Accept = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{
text = "\"" + activity.Text + "\""
});
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
//
context.Wait(MessageReceivedAsync);
}
}
}
이이 https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-quickstart
의 기반으로하는 경우 I 피들러로 모니터링하는 동안 테스트 봇과 클라이언트 간의 통신은 볼 수 있지만 절대로 REST http 요청은 볼 수 없습니다. 나는 이것이 어쨌든 최선의 방법이라고 확신하지 못하고 어떤 피드백을 좋아할 것입니다.
는이 엔드 포인트에 성공적으로 POST는 다음과 같습니다
POST /webhook/.../IncomingWebhook/.../... HTTP/1.1
Host: outlook.office.com
User-Agent: insomnia/5.12.4
Content-Type: application/json
Accept: application/json
Content-Length: 26
{
"text":"Hello world!"
}
나는 당신의 도움을 주셔서 감사합니다!
요청을 작성 중이지만 마지막 요청을하지는 마십시오. 코드에'(HttpWebResponse) httpWebRequest.GetResponse();'가 없습니다. 아래 답변을보십시오. –