Skype Bot以空身回应

时间:2016-04-01 18:35:03

标签: node.js skype skype-bots

我正在尝试使用基于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);

2 个答案:

答案 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)