【问题标题】:How to change the Bot/Skype channel incoming message text format如何更改 Bot/Skype 频道传入消息文本格式
【发布时间】:2017-11-08 20:12:27
【问题描述】:

机器人模拟器可以很好地处理明文响应,但是当我尝试通过 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();
    }
};

【问题讨论】:

  • 为什么不按频道过滤,然后添加一些正则表达式?
  • 我不知道该怎么做,我发现的有关频道的唯一示例是为 facebook 完成的,并且有一些与 .NET 轨道上的内容相关但在 Node.JS 上没有的内容。

标签: javascript node.js botframework skype


【解决方案1】:

要解决这种情况,您需要验证您是否有 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.');
}

【讨论】:

  • 这行不通,因为它永远不会到达第 40 行。我认为,机器人响应源自 Luis Intent。
【解决方案2】:

你可以像C#一样调用MessagetextFormat方法

接受的值为:

export var TextFormat = { plain: 'plain', markdown: 'markdown', xml: 'xml' };

【讨论】:

  • 我必须在什么时候设置这个?我在 bot.use 中间件上试过,但没有用。
猜你喜欢
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 2012-11-29
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多