我有一个在Azure上运行的Web App Bot。
它使用的是Microsoft机器人框架直线 API 3.0。
我想使用URL Ping 测试类型而不是多阶段 Web测试进行机器人的可用性测试,因为我没有 Visual Studio 2017 企业版。
在机器人的消息控制器中,这是我处理 Ping 响应的方式。 在本地主机中运行机器人时,我能够在机器人模拟器中获得预期的响应。
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 中的机器人时,我收到 HTTP 错误 500。
我不确定根本原因是什么,想知道这是否是由于 URL Ping 测试不知道直接线路机密。
感谢您对此的帮助。
非常感谢。
如果检查直线 API 3.0 文档中的"向机器人发送活动",则可以找到:
若要将活动发送到机器人,客户端必须创建一个活动对象来定义活动,然后发出POST请求,在请求正文中指定活动对象。
URLping 测试将向您指定的 URL 发送GET请求,它不会命中/触发您在消息控制器中为Ping
活动定义的代码。
如果要通过发送Ping
活动来检测机器人是否处于活动状态,可以从客户端发出如下所示的请求。
请求:
POST https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
Authorization: Bearer {directline_secret}
Content-Type: application/json
身体:
{
"type": "ping",
"from": {
"id": "user1"
}
}