当我将MessagingResponse.message与media_url参数一起使用时,或者当我将Media实例附加到预先创建的Message对象并作为我的webhook中的短信的答案(已在twilio上注册)返回时,我将使用vcard。目的地没有收到附在答案上的答案。
当我使用Client.create并使用media_url时,vcard成功收到。
我尝试了两个不同的帐户,结果是一样的。使用Client.create方法的问题是:它将创建一个新的消息旅行,它将花费0.02美元。如果我只回复MessagingResponse,它将花费0.0075美元。
我发现了这一点,但我认为这不相关:iOS failing to render vcf file
对于为什么我能解决这个问题有任何疑虑?
我的配置:
测试代码
from flask import Flask, request, send_from_directory
from twilio.twiml.messaging_response import MessagingResponse, Message, Media
from twilio.rest import Client
app = Flask(__name__, static_url_path="")
@app.route('/vcards/<path:path>')
def send_vcards(path):
return send_from_directory('vcards', path)
@app.route("/", methods=['GET', 'POST'])
def hey_there():
"""Respond to incoming messages"""
# Calls with client works fine.
# client = Client("SID", "TOKEN")
# client.messages.create(to=request.form["From"], from_="+TWILIO_NUMBER", body="Test with no vcard")
resp = MessagingResponse().message(body="hey, there!",
to=request.form["From"])
resp.append(Media("http://server:port/vcards/test.vcf"))
return str("Ok")
if __name__ == "__main__":
app.run(debug=True)
更新
我刚刚发现费用与发送媒体相关,而不是与邮件的回复/开始相关联。如果发送任何媒体(附带media_url或媒体),则需要花费0.02美元。
解决方案
resp = MessagingResponse()
message = Message(to=request.form["From"])
message.body("hey, there!")
message.media("server:port/vcards/test.vcf")
resp.append(message)
解决方案由twilio支持提供。 它的工作方式是这个链接: