我在Azure上运行一个Web App Bot。
它使用的是 Microsoft Bot Framework Direct Line API 3.0 。
我想使用 URL Ping测试类型代替多阶段Web测试来进行 Bot可用性测试,因为没有Visual Studio 2017企业版。
在Bot的消息控制器中,这就是我处理Pings响应的方式。 在本地主机中运行Bot时,我可以在Bot模拟器中获得预期的响应。
else if (message.Type == ActivityTypes.Ping)
{
ConnectorClient client = new ConnectorClient(new Uri(message.ServiceUrl));
var reply = message.CreateReply();
reply.Text = "{Some message}";
await client.Conversations.ReplyToActivityAsync(reply);
}
但是,当我在Azure中连接到Bot时,出现HTTP错误500。
我不确定根本原因是什么,想知道是否是由于URL Ping Test不知道Direct Line机密。
感谢您的帮助。
非常感谢。
答案 0 :(得分:2)
如果您查看Direct Line API 3.0文档中的“Send an activity to the bot”,则会发现:
要将活动发送给机器人,客户端必须创建一个Activity对象来定义活动,然后发出 POST 请求,并在请求的正文中指定Activity对象。
URL ping test将对您指定的URL发送 GET 请求,但不会在您的中点击/触发为Ping
活动定义的代码MessagesController 。
如果您想通过发送Ping
活动来检测您的机器人是否还活着,则可以向客户端发出如下请求。
请求:
POST https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
Authorization: Bearer {directline_secret}
Content-Type: application/json
身体:
{
"type": "ping",
"from": {
"id": "user1"
}
}