我正在为 Skype 频道开发一个机器人,它可以发送主动消息。
我遵循了示例项目https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/16.proactive-messages,这可以满足我的需要。
我将我的机器人托管在共享托管服务上,而不是 Azure。
我在 Azure 频道注册中注册了我的机器人,并在 Skype 上进行了测试。Bot 响应我,当我向主动端点发送请求时,我收到主动消息。一切安好。
然后我意识到,一段时间后,主动请求得到 500(内部服务器错误)。之后,我从 Skype 向 bot 输入了一些内容,然后再次发送主动请求,bot 发送了主动消息。
我调查了这个问题,发现了两件事。首先,在 IIS 中启用 AlwaysOn,但我在共享主机上,我不能这样做。其次,定期向 bot 发送一些请求,以保持 bot 的存活。
比我注意到的,我可以用 DirectLine 频道做到这一点。我设置了我的代码来开始对话,发送一些消息,并在我发送主动通知之前接收它。从 DirectLine 开始对话很容易,我发送了一条消息,并收到了回复。由于这是对机器人的请求,我认为这可以主动解决我的 500(内部服务器错误)响应状态。但它没有。
我只能在 Skype 中接收主动消息,前提是我在短时间内从 Skype 键入一些内容以进行 bot。否则,Skype 主动消息请求会收到 500 错误。
我不知道该怎么做。