我一直在修补nodejs
僵尸框架。我非常能够创建一个发送主动消息的机器人,但恰好它只与emulator
一起工作。
它可以在我的本地服务器上运行,也可以在https://chatobot.ngrok.io/api/messages
的远程服务器上运行到目前为止一切顺利。
然而,在完成https://dev.botframework.com和"注册过程后,"在Skype频道和电报频道发布,没有任何反应。机器人不会回复,没有任何东西可以击中我服务器的终端。
我使用了您在botframework网站上找到的Test
功能。它发送了我的消息,但它似乎永远无法到达我的服务器。另外,据我所知,它并没有给我任何错误。
但是,当我使用Emulator
连接到我的远程服务器时,一切正常......!
我做了什么:
MS_APP_ID
和MS_APP_PWD
已正确设置为环境变量。api
HTTPS
使用nginx
(使用自签名证书),然后使用ngrok
投放index.htm
(仅为了确保它不是'}我自己的证书问题)。PS2:这是我的代码https://github.com/assimoes/chatobot
答案 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
这解决了一切。