使用 Twilio 发送的 vCard 未在 iOS 中正确呈现

Posted

技术标签:

【中文标题】使用 Twilio 发送的 vCard 未在 iOS 中正确呈现【英文标题】:vCard sent with Twilio not properly rendered in iOS 【发布时间】:2019-09-26 22:28:57 【问题描述】:

我正在尝试使用 curl 将 vCard 发送到我的 ios,但 vCard 未在我的 iPhone 中正确呈现。

EXCLAMATION_MARK='!'
curl -X POST https://api.twilio.com/2010-04-01/Accounts/<acc>/Messages.json \
--data-urlencode "Body=Test6$EXCLAMATION_MARK" \
--data-urlencode "MediaUrl=https://mighty-health-assets.s3.amazonaws.com/vcf/James.vcf" \
--data-urlencode "From=+14155926669" \
--data-urlencode "To=+14159108243" \
-u <acc>:<token>

我对我的文件尝试了不同的 Content-TypeContent-Disposition

对于内容处置:

inline; filename="James.vcf" attachment; filename="James.vcf" inline; name="James" attachment; name="James"

对于内容类型:

text/vcard text/x-vcard text/vcard text/vcard; charset=utf-8; name="fileName.vcf"

结果总是一样的:

我想知道下一步该尝试什么,或者您之前是否遇到过同样的问题。

【问题讨论】:

【参考方案1】:

疑难解答问题

原来其中一个配置是正确的,而我面临的问题是另一个。

    当 Twilio 第一次接收文件时,它会缓存 如果您相应地调整标头,它不会影响 VCF 文件的传递,因为它将使用缓存版本 有办法克服这个问题

Twilio 缓存

要删除文件上的缓存或设置适当的缓存策略,请阅读:https://support.twilio.com/hc/en-us/articles/360024716314-How-Can-I-Change-the-Cache-Behavior-or-Message-Media-Files-

疑难解答我发现 Twilio 不会仅根据 VCF 文件的文件名更改缓存,而是根据文件内容本身更改缓存,因此您必须修改文件才能清除缓存,而不仅仅是名称。

正确配置

为了得到iOS手机正确解析的文件,您可以使用与附件https://mighty-health-assets.s3.amazonaws.com/vcf/James+Li.vcf相同的文件格式

标题

iOS 上的联系人卡片只能显示与您的文件相同的文本,因此请使用 Content-Type 上相同的 filename 标题属性命名您的文件,它应该会相应地工作

Content-Type: inline; filename="<You file name>.vcf"
Content-Disposition: text/x-vcard
Cache-Control: no-cache

【讨论】:

以上是关于使用 Twilio 发送的 vCard 未在 iOS 中正确呈现的主要内容,如果未能解决你的问题,请参考以下文章

生成 VCard 并通过 Twilio 发送

Flask Socket-IO 服务器客户端不通信(使用 tweepy 和 twilio)

Xamarin Forms iOS 远程通知不显示

使用 FCM 和 Twilio 发送短信

限制使用 twilio whatsapp API 发送消息

使用 Twilio 和 Android 发送短信