Botframework – Bot与Emulator正常工作,但没有任何发布的频道

我一直在用nodejs bot框架进行修改。 我成功地创build了一个发送主动消息的机器人,但它只是在emulator工作。

它可以在我的本地服务器以及我的远程服务器上运行,位于https://chatobot.ngrok.io/api/messages

到现在为止还挺好。

但是,在完成https://dev.botframework.com的注册过程并在Skype频道和电报频道上发布后,什么都不会发生。 机器人不会回复,也不会触发我的服务器端点。

我使用了botframework网站上的“ Testfunction。 它发送我的消息,但它似乎永远不会到达我的服务器。 另外,据我所知,这并没有给我任何错误。

Botframework测试窗口

Skype的。 Bot显然在线并正确注册

但是,当我连接到我的远程服务器使用Emulator一切正常…!

使用模拟器

我做了什么:

  • 确保我的MS_APP_IDMS_APP_PWD正确设置为环境variables。
  • 通过使用nginx (使用自签名证书)和后来的ngrok (只是为了确保它不是我自己的证书的问题)通过HTTPS服务来启动我的api
  • 试图添加更多的渠道(松弛和不是),以确保它不是特定于Skype或networking聊天的问题。
  • 在SO上查找类似的问题。 有很多,但通常这些人能够通过更新APP_ID和APP_PWD(我也尝试过)来解决他们的问题,或者甚至以错误的forms得到某种反馈……不幸的是,这不是我的情况:|

PS:不介意我的MS Paint技能。

PS2:这是我的代码https://github.com/assimoes/chatobot

所以,我可以确认问题的根源显然是在我的远程服务器。 发生什么事是,如果我运行我的服务器作为一个Linux服务,出于某种原因terminal不会被击中…但是,如果我在控制台上运行node index.js一切正常?

我会尝试研究更多为什么发生这种情况,但任何build议将不胜感激!

UPDATE

所以我终于明白了这一点。 所以发生了什么事情,我有我的nodejs API的以下systemdconfiguration:

 #/etc/systemd/system/bot.service [Unit] Description=Node.js Chatobot server [Service] ExecStart=/usr/local/bin/node /www/chatobot/index.js Restart=always RestartSec=10 StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodejs-chatobot User=chb Environment=NODE_ENV=development PORT=8009 [Install] WantedBy=multi-user.target 

这意味着当我启动服务时,具有我的APP IDAPP PWD的环境variables对于运行的进程是不可访问的。 为了解决这个问题,我只需要将systemd脚本更改为:

 #/etc/systemd/system/bot.service [Unit] Description=Node.js Chatobot server [Service] Environment=MS_APP_ID=<MY APP ID> Environment=MS_APP_PWD=<MY APP PWD> ExecStart=/usr/local/bin/node /www/chatobot/index.js Restart=always RestartSec=10 StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodejs-chatobot User=chb Environment=NODE_ENV=development PORT=8009 [Install] WantedBy=multi-user.target 

这解决了一切。