微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Twilio - 发送 vCard 未正确呈现

如何解决Twilio - 发送 vCard 未正确呈现

我正在尝试通过 Twilio (PHP) 发送联系人卡片 (.vcf),但似乎无法让 vcf 正确呈现。

.vcf 可以很好地保存到我的服务器,如果我随后从服务器下载文件并在我的 iPhone 或 Mac 上的 iMessage 中打开,它显示得很好。但是当通过 Twilio 发送时,我看到的只是纯文本格式的 .vcf 内容

这是我正在使用的代码

$account_sid = 'xxxxxxxx';
$auth_token  = 'xxxxxxxx';

$client      = new Services_Twilio($account_sid,$auth_token);

header('content-type: text/vcard');  
header('content-disposition: inline; filename= "testing2.vcf"'); 
                
try {

    $vCard = "BEGIN:VCARD\r";
    $vCard .= "VERSION:4.0\r";
    $vCard .= "N:Gump;Forrest;;Mr.;\r";
    $vCard .= "FN:Forrest Gump\r";
    $vCard .= "ORG:Bubba Gump Shrimp Co.\r";
    $vCard .= "TITLE:Shrimp Man\r";
    $vCard .= "PHOTO;MEDIATYPE=image/gif:http://www.example.com/dir_photos/my_photo.gif\r";
    $vCard .= "TEL;TYPE=work,voice;VALUE=uri:tel:+1-111-555-1212\r";
    $vCard .= "TEL;TYPE=home,voice;VALUE=uri:tel:+1-404-555-1212\r";
    $vCard .= "EMAIL:forrestgump@example.com\r";
    $vCard .= "END:VCARD";
 
    $path = '/var/www/xxxx/xxxx/testing2.vcf';
    file_put_contents($path,$vCard);

    $client->account->messages->create(array(
        'To' => $user_mobile,'MediaUrl' => ['https://www.example.com/vcfs/testing2.vcf'],'From' => "xxxxxxxxxxxx"
    ));
    
}

catch (\Services_Twilio_RestException $e) {
    
}

编辑

这是我从 MediaURL 中使用的 URL 得到的 curl 响应,表明它确实是一种 vcard 格式。

HTTP/1.1 200 OK
Date: Wed,24 Feb 2021 04:13:29 GMT
Server: Apache/2.4.29 (Ubuntu)
Last-Modified: Tue,23 Feb 2021 05:28:59 GMT
ETag: "15f-5bbfa320d710f"
Accept-Ranges: bytes
Content-Length: 351
Content-Type: text/vcard

解决方法

确保为您的 vCard 提供服务的端点设置以下标头:

  • Content-Type: text/vcard,
  • Cache-Control: no-cache
  • Content-Disposition: inline; filename="filename.vcf"

另见这个问题:Generate VCard and Send Via Twilio

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。