当使用 mediaUrl 选项通过 Twilio 通过 SMS 消息发送 vcard 文件时,它会显示在 iPhone 上,文件旁边有“text 1”,就好像“text 1”是文件名一样。
我尝试重命名 vcard 文件,使用示例 vcard 文件等。无论文件显示为“文本 1”。
我在 iPhone 8 和 10 上试过。我试过裸骨 VCF 文件和 Outlook 中的全功能文件,甚至在线示例,例如 http://www.w3.org/2002/12/cal/vcard-examples/john-doe.vcf - 无论如何,它们在 iPhone 上显示为“文本 1”。
我该怎么做才能使它成为电话号码或姓名?
编辑 --- 在@philnash 发表评论后,我能够向文件添加一个内容处置 header ,该 header 现在返回 header 中,如下所示:
Content-Disposition: attachment; name="John Doe"; filename="john-doe.vcf"
这是 Fiddler 的截图:
我还将文件重命名为唯一名称,并再次尝试以防 Twilio 或沿途的任何地方缓存旧文件。标题在那里,但消息仍然在 iPhone 上显示“文本 1”。
以防它与 Azure blob 存储有关。我还编写了一个 ASP.Net MVC 文件操作,该操作返回带有内容处理 header 的文件 - 它也在 iPhone 上显示为“文本 1”。
最佳答案
Twilio 开发人员布道者在这里。
当 Twilio 为 MMS 提供元数据时,它基于 Content-Disposition
从您提供的 URL 请求媒体时获取的 header 。当没有可用的时,它会被设置为通用的东西,比如在这个例子中的“text 1”。
要克服这个问题,您需要设置 Content-Disposition
您正在服务的文件上的响应 header 。在此标题中,您可以声明名称和文件名。我无法对此进行测试(我不在美国,因此无法从 Twilio 接收彩信)但我猜想使用了该名称,尽管我也会使用文件名进行测试。
标题应该看起来像这样:
Content-Disposition: inline; name="John Doe"; filename="john-doe.vcf"
关于twilio - Vcard 彩信文件名始终为 "text 1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387816/