Skip to content Skip to sidebar Skip to footer

Generate Vcard And Send Via Twilio

I am writing a Twilio + Parse app which lets users share their contact info via SMS. I have a sample Vcard as a string in javascript: message = ''; message += 'BEGIN:VCARD';

Solution 1:

How to send

To send a contact card in Twilio is pretty simple, use this curl command and it should work:

curl -X POST https://api.twilio.com/2010-04-01/Accounts/<account sid>/Messages.json \
--data-urlencode "Body=Your Heart Health Coach contact card" \
--data-urlencode "MediaUrl=https://mighty-health-assets.s3.amazonaws.com/vcf/James%20Li.vcf" \
--data-urlencode "From=<from>" \
--data-urlencode "To=<to>" \
-u <account sid>:<auth token>

You can actually use that vCard linked in the request for testing purposes.

What can go wrong

If your header are not properly configured, the contact card will not render properly on your iOS/Android phone, even though it seems to be a correct contact card.

Headers

The contact card on iOS can only display the same text as of your file, so name your file with the same filename header property on Content-Type and it should work accordingly

Content-Type:text/x-vcardContent-Disposition:inline;filename="<Youfilename>.vcf"Cache-Control:no-cache

Cached file

  1. When Twilio receives a file for the first time, it caches
  2. If you adjust the headers accordingly it won't impact the delivery of the VCF file, because it will use the cached version
  3. There is a way to overcome that

Make sure you submit it correctly from the first time, or you'll have to the the changes I suggest below

Twilio Caching

To remove the caching on your files or to set the appropriate cache policy, read: https://support.twilio.com/hc/en-us/articles/360024716314-How-Can-I-Change-the-Cache-Behavior-or-Message-Media-Files-

Troubleshooting I figured out that Twilio don't change cache based only on filename for VCF files, but by the file content itself, so you have to modify your file in order for it to clear the cache, not just the name.

Solution 2:

Twilio developer evangelist here. If you're trying to start a new message, then you don't need to use TwiML, but can simply use the rest API to send the information from your server.

With Parse.com it should be something like the following:

// Require and initialize the Twilio module with your credentialsvar client = require('twilio')('ACCOUNT_SID', 'AUTH_TOKEN');

// Send an SMS message
client.sendSms({
    to:'to', 
    from: 'from', 
    body: 'Hello world!',
    mediaUrl: your-vcard-url
  }, function(err, responseData) { 
    if (err) {
      console.log(err);
    } else { 
      console.log(responseData.from); 
      console.log(responseData.body);
    }
  }
);

So all you need to do now, is make sure your-vcard-url is accessible by Twilio, and that its mime type is set to be text/vcard.

In other words, you can't just send the contents of the vcard via text message, but need to tell Twilio where the vcard actually is, so it includes it in the message.

An example of a valid URL for a vcard would be this one. Hope this helps you

Post a Comment for "Generate Vcard And Send Via Twilio"