Python 如何使用表情符号输出发送Twilio短信响应
我用Python构建了一个与Twilio API配合使用的问答游戏,这样我就可以通过短信将游戏运行到我的Twilio号码。我试图弄清楚如何传递一个响应,当发送电话接收到它时,该响应将显示标准文本和表情符号 我一直致力于理解unicode与ascii字符集以及utf-8中的编码和解码。我上一次登陆的地方是下面的代码,它只是像手机上的常规字符串一样打印出unicode代码点。差距似乎在于如何隔离和传递手机可以解释的代码点。关于如何做到这一点,有什么想法或建议吗?还是有人会推荐一种不同的方法 该守则的现况如下:Python 如何使用表情符号输出发送Twilio短信响应,python,unicode,sms,twilio,emoji,Python,Unicode,Sms,Twilio,Emoji,我用Python构建了一个与Twilio API配合使用的问答游戏,这样我就可以通过短信将游戏运行到我的Twilio号码。我试图弄清楚如何传递一个响应,当发送电话接收到它时,该响应将显示标准文本和表情符号 我一直致力于理解unicode与ascii字符集以及utf-8中的编码和解码。我上一次登陆的地方是下面的代码,它只是像手机上的常规字符串一样打印出unicode代码点。差距似乎在于如何隔离和传递手机可以解释的代码点。关于如何做到这一点,有什么想法或建议吗?还是有人会推荐一种不同的方法 该守则的
# -*- coding: utf-8 -*-
from flask import render_template, flash, redirect, session, url_for, request, jsonify, g
from flask import Response
from app import app
from config import TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN
from twilio import twiml
from twilio.rest import TwilioRestClient
import re, random
client = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
def simplify_txt(submitted_txt):
response_letters = re.sub(r'\W+', '', submitted_txt)
return response_letters.lower()
@app.route("/quiz_game")
def quiz_game():
response = twiml.Response()
from_number = str(request.values.get('From', None))
body = request.values.get('Body', None)
simplify_body = simplify_txt(body)
questions = {
0: "What word is shorter when you add two letters to it?",
1: "If I drink, I die. If i eat, I am fine. What am I?",
2: "What kind of tree is carried in your hand?",
3: "Thanks for playing.",
4: ""
}
# Stripped down answers to compare to text in case multiple word answer
simplify_answers = {
1:"short",
2:"fire",
3:"palm",
4:""
}
# Pretty print answers
print_answers = {
1:"short",
2:"fire",
3:"palm",
4:""
}
# if from_number not in track_user:
if from_number not in session:
session[from_number] = 0
counter = session.get('counter', 0)
counter += 1
session['counter'] = counter
message = "Shall we play a game? %s " % questions[0]
else:
game_round = session['counter']
if simplify_answers[game_round] == simplify_body:
session[from_number] += 10
score = session[from_number]
message = "Correct Answer. You have %d points out of 30. %s" % (score, questions[game_round])
message += unicode('u1f31f',"unicode_escape").encode('utf-8')
else:
score = session[from_number]
message = "Wrong answer. We were looking for %s. Your score is %d out of 30. %s" % (print_answers[game_round], score, questions[game_round])
session['counter'] += 1
if session['counter'] > 3:
session.pop(from_number, None)
session['counter'] = 0
response.sms(message)
return Response(str(response))
更新:问题的一部分是将sms方法应用于消息变量,将其转换为XML格式,但没有保留unicode代码点。application messages.create方法捕获并保留unicode代码点,以便移动设备能够对其进行解释
对于修复,我将Rob的建议主要应用于代码的最后两行,将response.sms和return替换为client.messages.create,并将message变量传递给body参数。我还将u for unicode应用于分配给message变量的所有字符串,并将表情符号代码点/图像添加到消息中。这使得发短信表情很有效。如果您想查看更新,请签出:关于如何使用Twilio Python模块发送表情符号的好问题。也喜欢战争游戏参考。我想我知道这里发生了什么 发光星符号的unicode值为U+1F31F,表示为Python unicode文本为
U“\U0001F31F”
。如果没有加号,它实际上是一个不同的代码点,而不是发光的星星表情符号
因此,要在这个特定示例中发送,您可以执行以下操作:
from twilio.rest import TwilioRestClient
# Set Twilio credentials
TWILIO_ACCOUNT_SID = "ACxxxxxxxxxxxxx"
TWILIO_AUTH_TOKEN = "yyyyyyyyyyyyyyyy"
TWILIO_NUMBER = "+15558675309"
# Instantiate Twilio REST client
client = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
# Send a glowing star emoji
client.messages.create(from_=TWILIO_NUMBER, to="+15556667777", body=u"Here is your tasty emoji: \U0001F31F")
希望有帮助 这完全有帮助。谢谢。这个网站帮我找到了逃生密码