现在我有一个程序接收短信,发布消息正文,然后将短信转发给另一个号码。但是我收到Twilio关于“方案验证”的错误。代码完全按照应有的方式运行,但我想修复错误。
最初我有以下代码:
import RUAlertsTwilioWEBSERVER
import twilio.twiml
import time
import praw
from flask import Flask, request, redirect
from twilio.rest import TwilioRestClient
from passwords import *
from twilio import twiml
def login():
r = praw.Reddit(app_ua)
r.set_oauth_app_info(app_id, app_secret, app_uri)
r.refresh_access_information(app_refresh)
return r
r=RUAlertsTwilioWEBSERVER.login()
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=str(TheMessage))
r.submit(*submit to reddit code*)
return str(TheMessage)
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0")
Twilio调试器给了我
Content is not allowed in prolog.
Warning - 12200
Schema validation warning
The provided XML does not conform to the Twilio Markup XML schema.
我尝试通过将代码更改为以下内容来获取帖子所需的XML(仅限相关部分)
@app.route("/", methods=['GET', 'POST'])
def AlertService():
TheMessage=request.form.get("Body")
if (TheMessage != None):
print(TheMessage)
resp = twiml.Response()
XML = resp.say(TheMessage)
client.messages.create(to=ePhone,from_=tPhone,body=XML)
r.submit(*submit to reddit code*)
return str(resp)
return str(TheMessage)
此代码无效,因此我将body=XML
更改为body=str(XML)
。但是现在它只是将XML作为正文发送,我收到错误:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'Say'. One of '{Sms, Message, Redirect}' is expected.
Warning - 12200
Schema validation warning
The provided XML does not conform to the Twilio Markup XML schema.
我该如何解决这个问题?
答案 0 :(得分:0)
Twilio福音传教士在这里。
<Say>
不是一个有效的TwiML动词,用于响应对消息请求URL的请求。它仅对语音请求有效。
如果您想将短信发送给发送短信给Twilio的人,请使用<Message>
动词。
resp = twilio.twiml.Response()
resp.message(message)
此外,您似乎正在发送TwiML作为新的出站SMS消息的消息。我认为你可以用Body param代替它。
client.messages.create(to=ePhone,from_=tPhone,body=TheMessage)
希望有所帮助。