如何在 google chat/hangouts 上使用 nodejs xmpp 客户端发送 emojis/emoticons

How to send emojis/emoticons with nodejs xmpp client on google chat/hangouts

我已经使用 node-red xmpp 客户端节点实现了 Google 聊天机器人。 一切正常,但我不知道如何让我的机器人给我发送 smiley/emoji/emoticon/etc.

例如,我想对我的机器人说 "hey, thanks",我希望机器人的反应是 "thumbs up" 表情符号,当您键入“(Y )":

但我得到的是文字字符串“(Y)”,而不是等效的图形。我是否必须以 unicode 或类似的方式发送它?我猜图形解释取决于聊天客户端(我正在通过 gmail 收件箱页面内的环聊小部件聊天)。

谢谢!

好吧,我终于明白了。

如本文所述excellent article by Mathias Bynens、"Javascript has a Unicode problem"。

我建议阅读这篇文章,但简而言之,问题是根据您要在 javascript 中表示的 unicode 字符,您可能需要 实际同时使用两个字符,它们被称为构成实际字符的 "two surrogate halves"This link 同样来自同一作者,解释了根据字符的代码点计算这两半的公式。

不过,我发现网站 https://codepoints.net 列出了所有字符,并为您提供了不同语言的正确表示,Javascript 和 JSON 就是其中之一。

例如,这是 "thumbsup" 字符的页面:https://codepoints.net/U+1F44D

在那里,在 "Representations" 下,如果您单击 "show more",您会看到许多不同语言的表示。对于具有代码点 U+1F44D 的大拇指,javascript 表示是用这两个代理项表示的:\uD83D\uDC4D

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

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