我的代码接收传入的短信,提取正文,并将正文转发给另一个号码。 (tPhone是Twilio号码,ePhone是我想要转发的号码)
import twilio.twiml
from flask import Flask, request, redirect
from twilio.rest import TwilioRestClient
from passwords import *
client = TwilioRestClient(account_sid, auth_token)
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def AlertService():
TheMessage=request.form.get("Body")
if (TheMessage != None):
print(TheMessage)
client.messages.create(to=ePhone, from_=tPhone, body=TheMessage)
return str(TheMessage)
if __name__ == "__main__":
app.run(debug=True,host="0.0.0.0")
代码有效(消息被转发),但Twilio调试器告诉我
prolog中不允许使用内容。
警告 - 12200
架构验证警告
提供的XML不符合Twilio标记XML架构。
如何修复发送给Twilio的XML?
编辑:我找到的一些东西。即使我将'TheMessage'设置为预定义的字符串(例如TheMessage="hello"
),我也会从Twilio收到相同的错误。
此外,如果我尝试生成并发送XML,我仍然会收到相同的错误。
resp = twiml.Response()
XML = resp.message(TheMessage)
print(XML)
client.messages.create(body=str(XML),to=ePhone,from_=tPhone)
如果我尝试body=XML
,代码将无法发送,如果我尝试body=str(XML)
,则只会将XML作为纯文本发送。
答案 0 :(得分:1)
Twilio开发者传道者在这里。
目前看起来好像在使用REST API to forward the SMS message。虽然您可以这样做,但使用TwiML可以更轻松地使用<Message>
verb在请求中执行此操作。在您的第二个示例中,您似乎尝试将TwiML和REST API一起使用,但这不起作用。
因此,您只想构建一个TwiML响应,如果有传入消息,则将消息添加到该响应中,然后使用<Message>
attributes to
and from
将其转发到您的电话号码。像这样:
import twilio.twiml
from flask import Flask, request, redirect
from passwords import *
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def AlertService():
TheMessage=request.form.get("Body")
resp = twiml.Response()
if (TheMessage != None):
resp.message(TheMessage, to=ePhone)
return str(resp)
if __name__ == "__main__":
app.run(debug=True,host="0.0.0.0")
让我知道这是否有帮助。