我使用node-red xmpp客户端节点实现了Google聊天机器人。 一切正常,但我不知道如何让我的机器人给我一个笑脸/表情符号/表情符号等。
例如,我想对我的机器人说“嘿,谢谢”,我希望机器人响应是“竖起大拇指”的表情符号,当你输入“(Y)”时出现的表情符号:
但我得到的是文字字符串“(Y)”而不是图形等价物。我是否必须以unicode或类似的方式发送它?我猜测图形解释取决于聊天客户端(我正在通过gmail收件箱页面中的环聊小部件聊天)。
谢谢!
答案 0 :(得分:6)
好吧,我终于明白了。
如此excellent article by Mathias Bynens中所述,“Javascript存在Unicode问题”。
我建议阅读这篇文章,但简而言之,根据您想在javascript中表示的unicode字符,您可能需要实际使用两个字符,这些被称为形成实际角色的“两个代理一半”。来自同一作者的This link也解释了根据角色的代码点计算这两半的公式。
但是,我发现网站https://codepoints.net列出了所有字符,并为您提供了不同语言(Javascript和JSON)的正确表示。
例如,这是“thumbsup”字符的页面:https://codepoints.net/U+1F44D
在“Representations”下,如果单击“show more”,您将看到许多不同语言的表示形式。对于具有代码点U+1F44D
的thumbsup,javascript表示具有以下两个代理项:\uD83D\uDC4D
因此,如果您将javascript字符串'\uD83D\uDC4D'
发送到启用了unicode的客户端,您应该会看到相应的表情符号。
注意:我最终没有实现Google聊天机器人(XMPP),而是使用Telegram API实现Telegram机器人,但关键概念是相同的。