在Bot Framework中检测表情符号

时间:2017-02-07 16:05:12

标签: node.js emoji botframework

我正在使用Bot框架开发机器人。收到消息时,我需要检测传入消息中发送的表情符号。

我正在考虑使用正则表达式来做这件事,但我无法做到。问题是不同的频道以不同的方式发送表情符号到机器人。我已经为“接收”活动注册了一个听众,并查看了为不同频道提供的文本,发送了相同的微笑表情符号:

  • Slack::smile:
  • Skype:<ss type="smile">:)<ss>
  • 模拟器:

我需要确定我收到的表情符号并按行动计算。理想情况下,无论我使用什么频道,我都会收到表情符号的unicode字符。有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

我认为您可以使用中间件检查用户响应,然后将(基于您的消息发送的频道)转换为任何通用表情符号。

在您的样本中:

  • 松弛:微笑:
  • Skype :: :)
  • 模拟器:

您的结果可能是:“:)”。覆盖所有支持的频道的所有表情符号可能非常复杂。

var bot = new builder.UniversalBot(connector, [
    function (session) {
        builder.Prompts.text(session, 'Please send an emoji...');
    },
    function (session, result) {
        console.log(result.response);
    }
]);

const convertEmoji = (event) => {
    if (event.source === "skype") {
        if (/laugh/g.test(event.text)) {
            event.text = ':D';
        }
    }
};

bot.use({
    receive: function (event, next) {
        convertEmoji(event);
        next();
    }
});

请注意,这将适用于用户发送给bot的所有消息。