【问题标题】:Skype Bot responding with empty bodySkype Bot 以空的身体响应
【发布时间】:2016-07-21 16:25:50
【问题描述】:

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

【问题讨论】:

    标签: node.js skype skype-bots


    【解决方案1】:

    最终编辑和解决方案:我认为 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。”

    【讨论】:

    • 这可能是 Skype 端的问题。我最近收到了我的机器人回显的 2 条消息,然后它再次停止工作。顺便说一句,我部署在 Heroku 上,但考虑到机器人只是在寻找 api 端点,这应该没什么区别。
    • @polskais1 我的也部署到 Heroku。仅供参考
    • 嗯,很高兴知道。如果我有幸让这个东西稳定运行,我一定会发表评论!
    • 让你的机器人在 Heroku 上工作有什么好运气吗?我自己也看到了同样的问题 - 使用 ngrok 在本地进行测试可以正常工作。将消息传递 webhook 切换到 Heroku 的结果与 OP 相同。通过 Papertrail,我看到 skype-sdk.messagingHandler Received request, receiving data. - 但 console.log 没有任何内容尝试了 server.post 命令中的完整 URL,但没有任何变化。我最后的手段是尝试 Azure,但只是好奇是否有人成功部署到 Heroku。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多