我正在尝试使用基于echo example的Skype机器人运行并运行,但我很难在我的应用程序上成功发布POST。当我向/v1/chat
发送帖子时,我的状态为201(成功创建),而且身体中没有任何内容。我的console.log
也没有打印任何内容,这让我相信botService.on('personalMessage', ...)
函数没有运行。有没有人知道如何格式化这些POST请求?我似乎无法在文档中找到任何内容。
我的代码:
const fs = require('fs');
const restify = require('restify');
const skype = require('skype-sdk');
const botService = new skype.BotService({
messaging: {
botId: '28:<bot’s id="ID176db9ab-e313-4d76-a60c-bc2a280e9825">',
serverUrl : "https://apis.skype.com",
requestTimeout : 15000,
appId: process.env.APP_ID,
appSecret: process.env.APP_SECRET
}
});
botService.on('contactAdded', (bot, data) => {
console.log('contact added');
bot.reply('Hello ${data.fromDisplayName}!', true);
});
botService.on('personalMessage', (bot, data) => {
console.log('message incoming');
console.log(data);
bot.reply('Hey ${data.from}. Thank you for your message: "${data.content}".', true);
});
const server = restify.createServer();
server.post('/v1/chat', skype.messagingHandler(botService));
const port = process.env.PORT || 8080;
server.listen(port);
console.log('Listening for incoming requests on port ' + port);
答案 0 :(得分:0)
最终编辑&amp;解决方案:我认为Heroku造成的问题不知何故(可能是他们的免费等级,1 dyno)。经过一番努力,我将程序上传到Azure,现在它正在完美运行。
可能的解决方案:您需要在server.post命令中更改服务器地址。如果您在&#34; https:\ www.yourwebsite.com/v1/chat"中运行您的程序; ,你需要修改它;
server.post('/v1/chat', skype.messagingHandler(botService));
到此;
server.post('https:\\www.yourwebsite.com/v1/chat', skype.messagingHandler(botService));
当然,不要忘记指定您的app id,bot id和app secret。如果您没有,则需要在Skype应用程序页面中生成密码。
我对OP有确切的问题。我遵循了教程,并没有指定如何修改我们的代码以符合我们的服务器。因此,在运行程序后,它只返回此;
{&#34;代码&#34;:&#34; ResourceNotFound&#34;,&#34;消息&#34;:&#34; /不存在&#34;}
在Skype Bot网页的Echo示例中;它说;
&#34;我们假设在注册过程中,机器人的消息传递网址已设置为https://echobot.azurewebsites.net/v1/chat。&#34;
答案 1 :(得分:0)