如何更改Bot / Skype频道传入消息文本格式

时间:2017-06-07 12:53:39

标签: javascript node.js botframework skype

Bot模拟器在明文响应中工作正常,但当我尝试通过Skype做同样的机器人响应;

  

我不明白,请再试一次

我发现Skype通过将其封装在<a />标签 - XMM格式中来自动格式化电子邮件,我有点卡住应该做的事情。我认为将传入的文本格式更改为纯文本将解决此问题。

我发现这类似于similar issue on Github,但这是在C#上,我使用的是Node.JS。

如何将bot / skype频道的默认文本格式更改为纯文本而不是markdown,以便不会发生Skype自动格式化?

根据@ezequiel-jadib更新了,但仍然没有运气。也许我做错了?

// bot.js
bot.use(...[logger]);

// logger.js
module.exports = exports = {
    receive: (e, next) => {
        e.textFormat('plain');
        logConversation(e);
        next();
    },
    send: (e, next) => {
        logConversation(e);
        next();
    }
};

2 个答案:

答案 0 :(得分:0)

要解决这种情况,您需要验证是否有HTML包装的电子邮件地址,然后从字符串中提取电子邮件部分,然后再将其保存到session.dialogData

例如,替换line 40

const usernameOrEmail = session.dialogData.usernameOrEmail = results.response;

使用:

// where results.response is in the format '<a href="hello@world.com">hello@world.com</a>'
var exampleEmailWrappedInHtml = results.response;

// validate if we have email wrapped in HTML from Skype
if(exampleEmailWrappedInHtml.match(/<a href="mailto:/i)) {
    console.log('HTML wrapped email detected!');
    const usernameOrEmail = session.dialogData.usernameOrEmail = exampleEmailWrappedInHtml.split('>')[1].split('<')[0];
} else {
    console.log('no match.');
}

答案 1 :(得分:0)

您可以在[{1}}

中调用Message的{​​{3}}方法

接受的值是:

C#

相关问题