如何在Google Chat/Hangouts上使用Node.js XMPP客户端发送表情符号/表情图标

3
我使用node-red xmpp客户端节点实现了一个谷歌聊天机器人。一切都运行正常,但我不知道如何使我的机器人发送表情符号/emoji/emoticon等。
例如,我想对我的机器人说“嘿,谢谢”,并且我希望机器人的响应是“大拇指向上”的表情符号,就像在输入“(Y)”时出现的那个表情符号一样。
但是我得到的是字面字符串“(Y)”,而不是图形等效物。我需要以Unicode或类似方式发送吗?我猜图形解释取决于聊天客户端(我正在gmail收件箱页面内的hangouts小部件中聊天)。
谢谢!

我将研究“代码点”,如此处所述:http://emojipedia.org/pile-of-poo/。如果我能使其工作,我会将其发布为答案。 - jotadepicas
1个回答

8

我终于搞定了。

正如Mathias Bynens在这篇优秀的文章中所述,“Javascript存在Unicode问题”。

我建议阅读这篇文章,简而言之,问题是取决于你想在javascript中表示什么unicode字符,你可能需要实际上使用两个字符,它们被称为“两个代理半体”,形成实际的字符。同一位作者的这个链接还解释了根据字符的码点计算这两个半体的公式。

但是,我发现网站https://codepoints.net列出了所有字符,并为不同的语言、Javascript和JSON等提供正确的表示方法。

例如,这是“竖起大拇指”字符的页面:https://codepoints.net/U+1F44D

在那里,在“表示法”下,如果单击“显示更多”,您将看到许多不同语言的表示方法。对于具有码点U+1F44D的竖起大拇指,javascript表示为这两个代理半体:\uD83D\uDC4D

因此,如果您将javascript字符串'\uD83D\uDC4D'发送到支持Unicode的客户端,则应看到相应的表情符号。

注意:我最终没有实现Google聊天机器人(XMPP),而是使用Telegram API实现了一个Telegram机器人,但关键概念是相同的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接