Search code examples
javascriptparse-platformsmstwilio

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';
  message += 'BDAY;VALUE=DATE:1963-09-21';
  message += 'VERSION:3.0';
  message += 'N:Stenerson;Derik';
  message += 'FN:Derik Stenerson';
  message += 'ORG:Microsoft Corporation';
  message += 'ADR;TYPE=WORK,POSTAL,PARCEL:;;One Microsoft Way;Redmond;WA;98052-6399;USA';
  message += 'TEL;TYPE=WORK,MSG:+1-425-936-5522';
  message += 'TEL;TYPE=WORK,FAX:+1-425-936-7329';
  message += 'EMAIL;TYPE=INTERNET:deriks@Microsoft.com';
  message += 'END:VCARD';
  message += 'BEGIN:VCARD';
  message += 'VERSION:3.0';
  message += 'N:Ganguly;Anik';
  message += 'FN:Anik Ganguly';
  message += 'ORG: Open Text Inc.';
  message += 'ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 101;38777 West Six Mile Road;Livonia;MI;48152;USA';
  message += 'TEL;TYPE=WORK,MSG:+1-734-542-5955';
  message += 'EMAIL;TYPE=INTERNET:ganguly@acm.org';
  message += 'END:VCARD';
  message += 'BEGIN:VCARD';
  message += 'VERSION:3.0';
  message += 'N:Moskowitz;Robert';
  message += 'FN:Robert Moskowitz';
  message += 'EMAIL;TYPE=INTERNET:rgm-ietf@htt-consult.com';
  message += 'END:VCARD';

And I am trying to figure out how to send this to a phone number as a vcard so the phone detects it instead of the text.

I have a method:

function respondWithMessage(message, response) {
  response.set('Content-Type', 'text/xml');
  var xmlVersion = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n';
  message = '<Message>\n' + message + '\n</Message>';
  message = '<Response>\n' + message + '\n</Response>';
  message = xmlVersion + message;
  response.send(message);
}

With which I am able to send text messages. In their documentation, Twilio states that text/vcard messages are supported here: https://www.twilio.com/docs/api/rest/accepted-mime-types But I have been unable to get it to work. Could you provide an example of how to send this VCard via SMS with Twilio? Thanks!


Solution

  • 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 credentials
    var 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