1

我正在尝试根据echo 示例启动并运行 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);
4

2 回答 2

0

最终编辑和解决方案:我认为 Heroku 以某种方式引起的问题(可能是他们的免费层,1 dyno)。经过一番努力,我将程序上传到 Azure,现在它运行良好。


可能的解决方案:您需要在 server.post 命令中更改服务器地址。如果你在 "https:\www.yourwebsite.com/v1/chat" 中运行你的程序,你需要修改它;

server.post('/v1/chat', skype.messagingHandler(botService));

对此;

server.post('https:\\www.yourwebsite.com/v1/chat', skype.messagingHandler(botService));

当然,不要忘记指定您的应用程序 ID、机器人 ID 和应用程序密码。如果您没有,则需要在您的 Skype 应用程序页面中生成一个密码。


我对OP有确切的问题。我按照教程进行操作,它没有指定如何修改我们的代码以符合我们的服务器。所以,运行程序后它只返回这个;

{"code":"ResourceNotFound","message":"/ 不存在"}

在 Skype Bot 网页中的 Echo 示例中;它说;

“我们假设机器人的消息传递 URL 在注册期间设置为https://echobot.azurewebsites.net/v1/chat。”

于 2016-04-26T00:45:26.627 回答
0

确保已设置 Procfile 和工作进程

我的机器人在heroku 本身上运行良好

于 2017-03-30T19:15:09.420 回答