Botframework - Bot与模拟器正常工作,但没有任何已发布的频道

时间:2017-10-20 19:20:30

标签: node.js botframework

我一直在修补nodejs僵尸框架。我非常能够创建一个发送主动消息的机器人,但恰好它只与emulator一起工作。

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

的远程服务器上运行

到目前为止一切顺利。

然而,在完成https://dev.botframework.com和"注册过程后,"在Skype频道和电报频道发布,没有任何反应。机器人不会回复,没有任何东西可以击中我服务器的终端。

我使用了您在botframework网站上找到的Test功能。它发送了我的消息,但它似乎永远无法到达我的服务器。另外,据我所知,它并没有给我任何错误。

Botframework Test window

Skype. Bot apparently Online and properly registred

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

Working with Emulator

我做了什么:

  • 确保我的MS_APP_IDMS_APP_PWD已正确设置为环境变量。
  • 首先使用api HTTPS使用nginx(使用自签名证书),然后使用ngrok投放index.htm(仅为了确保它不是'}我自己的证书问题)。
  • 试图添加更多频道(Slack和什么不是),以确保它不是特定于Skype或网络聊天的问题。
  • 在SO上寻找类似的问题。有很多,但通常这些人能够通过更新他们的APP_ID和APP_PWD(我也尝试过)或甚至以错误的形式获得某种反馈来解决他们的问题...不幸的是它& #39;不是我的情况:|
PS:不要介意我的MS Paint技能。

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

1 个答案:

答案 0 :(得分:0)

所以,我可以确认问题的根源显然是在我的远程服务器上。如果我将我的服务器作为Linux服务运行,由于某种原因,端点永远不会被击中......但是,如果我在控制台上运行node index.js,一切正常吗?

我会尝试更多地研究为什么会发生这种情况,但任何建议都会受到高度赞赏!

更新

所以我终于想通了。所以发生的事情是我对nodejs api进行了以下systemd配置:

#/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 ID和我的APP PWD的环境变量。要解决此问题,我只需将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

这解决了一切。