我有一个webhook来处理发送到我的Twilio号码的任何短信。但是,只有在消息中有文本时,此webhook才有效(GET请求中将有一个正文)。
如果是位置消息,是否可以解析消息?例如如果我将当前位置发送到我的Twilio号码并将其作为GET请求重定向到webhook,我是否可以检索该位置?
如果我将当前位置发送到iPhone上,这就是我的webhook收到的内容:
at=info method=GET path="/sms/?ToCountry=US&MediaContentType0=text/x-vcard&ToState=NJ&SmsMessageSid=MMde62b3369705a8f65f18abe5b7387c2b&NumMedia=1&ToCity=NEWARK&FromZip=07920&SmsSid=MMde62b3369705a8f65f18abe5b7387c2b&FromState=NJ&SmsStatus=received&FromCity=SOMERVILLE&Body=&FromCountry=US&To=%2B18627019482&ToZip=07102&NumSegments=1&MessageSid=MMde62b3369705a8f65f18abe5b7387c2b&AccountSid=ACe72df68a68db79d9a4ac6248df6e981e&From=%2B19083925806&MediaUrl0=https://api.twilio.com/2010-04-01/Accounts/ACe72df68a68db79d9a4ac6248df6e981e/Messages/MMde62b3369705a8f65f18abe5b7387c2b/Media/MEcd56717ce17f3a320b06c4ee11df2243&ApiVersion=2010-04-01"
为了进行比较,这是一条普通的短信:
at=info method=GET path="/sms/?ToCountry=US&ToState=NJ&SmsMessageSid=SM4767dabb915fae749c7d5b59d6f655a2&NumMedia=0&ToCity=NEWARK&FromZip=07920&SmsSid=SM4767dabb915fae749c7d5b59d6f655a2&FromState=NJ&SmsStatus=received&FromCity=SOMERVILLE&Body=Denver+E+union&FromCountry=US&To=%2B18627019482&ToZip=07102&NumSegments=1&MessageSid=SM4767dabb915fae749c7d5b59d6f655a2&AccountSid=ACe72df68a68db79d9a4ac6248df6e981e&From=%2B19083925806&ApiVersion=2010-04-01"
在正常短信中,我可以解析Body=Denver+E+union
以获取消息,但我不确定您是否可以对位置消息的内容做任何事情。
如果我无法获得该位置,我可以通过哪些其他简单的方式发送可解析的位置?
答案 0 :(得分:2)
我通过创建一个使用HTML5地理位置功能获取手机的lat / lng的基本网页解决了类似的问题。然后它通过AJAX将坐标提交给php脚本。
我的服务器对员工位置进行地理编码,计算到下一个工作的旅行时间,并使用Twilio API向客户发送包含ETA信息的短信。
你可以完全绕过Twilio并让你的服务器直接向你的webhook发出请求,或者甚至通过AJAX调用,如果它们都在同一个域上。一切都取决于你想要实现的目标。
答案 1 :(得分:2)
Twilio开发者传道者在这里。
正如Devin在评论中指出的那样,该位置已作为附加到该消息的Vcard发送。请求中的URL MediaUrl0
链接到如下所示的Vcard:
BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iOS 10.3.2//EN
N:;YOUR_NAME’s Location;;;
FN:YOUR_NAME’s Location
item1.URL;type=pref:http://maps.apple.com/?ll=39.576254\,-104.865774&q=39.576254\,-104.865774
item1.X-ABLabel:map url
END:VCARD
正如您所看到的,这附带了Apple Maps URL,这不是最有用的东西。但是,您还可以看到您所在位置的纬度和经度包含在网址中。您可以想象解析此URL并提取查询参数以获取位置。正如德文所指出的那样,这可能会在各种设备上发生变化。您可能希望使用几个不同的选项进行测试,以确保它是可扩展的。
让我知道这是否有帮助。