みなさん、cometchatってご存知でしょうか?
cometchatとはチャットAPI&メッセージSDKで、自分のWebサイトに簡単にチャット機能が設置できます。
私はこのcometchat pro(cometchatのもっと柔軟に扱えるサービス)のAPIを使って自分のサイトにチャット機能をつけました。
(こちらを元にpython(Django)で実装しています。)
しかし完成後、悲劇が起こります。
cometchatで日本語のテキストが送れない。。。。
私のサイトは日本語
サイトがインターナショナルになってしまった訳です。
公式ドキュメントには「日本語も対応しているよ!」と書いてありますが、
実際日本語でメッセージ送ろうとすると以下のエラーが出ます。
UnicodeEncodeError: 'latin-1' codec can't encode characters
in position 90-92: Body ('あああ') is not valid Latin-1.
Use body.encode('utf-8') if you want to send it encoded in UTF-8.
Use body.encode('utf-8')←上記のエラーでこれ試せばいいって教えてくれてますが、
試すとERR_BAD_REQUESTが返ってきます。
{"error":{"code":"ERR_BAD_REQUEST","details":{"receiver":["The
receiver field is required."],"receiverType":["The receiver
type field is required."]},"message":"Failed to validate the
data sent with the request."}}
解決方法
メッセージを送る時。
byteにして16進数文字列に変換する。
text = "送りたいメッセージ"
text.encode().hex()
# 'e98081e3828ae3819fe38184e383a1e38383e382bbe383bce382b8'
メッセージを受け取る時。
16進数文字列をbyteに変換、byteをstrに変換する。
bytes.fromhex(text).decode()
# "送りたいメッセージ"
※一応公式サイトには日本語も対応していると書いているので、
もしかしたら普通に送っても問題ない可能性があります。