生成 VCard 并通过 Twilio 发送
Generate VCard and Send Via Twilio
我正在编写一个 Twilio + Parse 应用程序,它允许用户通过 SMS 共享他们的联系信息。我在 javascript:
中有一个示例 Vcard 作为字符串
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';
我想弄清楚如何将它作为 vcard 发送到 phone 号码,以便 phone 检测到它而不是文本。
我有一个方法:
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);
}
我可以用它发送短信。
在他们的文档中,Twilio 声明这里支持 text/vcard 消息:
https://www.twilio.com/docs/api/rest/accepted-mime-types
但我一直无法让它工作。
您能否提供一个示例,说明如何使用 Twilio 通过 SMS 发送此 VCard?
谢谢!
这里是 Twilio 开发人员布道者。如果您正在尝试开始一条新消息,那么您不需要使用 TwiML,而可以简单地使用其余的 API 从您的服务器发送信息。
对于 Parse.com 应该是这样的:
// 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);
}
}
);
所以您现在需要做的就是确保 Twilio 可以访问 your-vcard-url
,并且它的 mime 类型设置为 text/vcard
。
换句话说,您不能只通过短信发送 vcard 的内容,而是需要告诉 Twilio vcard 的实际位置,因此它会将其包含在消息中。
电子名片的有效 URL 示例为 this one。希望对你有帮助
如何发送
要在 Twilio 中发送名片非常简单,使用这个 curl 命令它应该可以工作:
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>
您实际上可以使用请求中链接的 vCard 进行测试。
什么会出错
如果您的 header 配置不正确,名片将不会在您的 iOS/Android phone 上正确呈现,即使它看起来是正确的名片。
Headers
iOS 上的名片只能显示与您的文件相同的文本,因此请使用与 filename
header 属性 相同的文件名13=] 它应该相应地工作
Content-Type: text/x-vcard
Content-Disposition: inline; filename="<You file name>.vcf"
Cache-Control: no-cache
缓存文件
- 当 Twilio 第一次收到文件时,它会缓存
- 如果您相应地调整 headers 它不会影响 VCF 文件的传送,因为它将使用缓存版本
- 有办法克服这个问题
确保您从第一次就正确提交,否则您将不得不按照我在下面建议的更改
Twilio 缓存
要删除文件缓存或设置适当的缓存策略,请阅读:https://support.twilio.com/hc/en-us/articles/360024716314-How-Can-I-Change-the-Cache-Behavior-or-Message-Media-Files-
疑难解答我发现 Twilio 不会仅根据 VCF 文件的文件名更改缓存,而是根据文件内容本身,因此您必须修改文件才能清除缓存,而不仅仅是名字.
我正在编写一个 Twilio + Parse 应用程序,它允许用户通过 SMS 共享他们的联系信息。我在 javascript:
中有一个示例 Vcard 作为字符串 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';
我想弄清楚如何将它作为 vcard 发送到 phone 号码,以便 phone 检测到它而不是文本。
我有一个方法:
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);
}
我可以用它发送短信。 在他们的文档中,Twilio 声明这里支持 text/vcard 消息: https://www.twilio.com/docs/api/rest/accepted-mime-types 但我一直无法让它工作。 您能否提供一个示例,说明如何使用 Twilio 通过 SMS 发送此 VCard? 谢谢!
这里是 Twilio 开发人员布道者。如果您正在尝试开始一条新消息,那么您不需要使用 TwiML,而可以简单地使用其余的 API 从您的服务器发送信息。
对于 Parse.com 应该是这样的:
// 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);
}
}
);
所以您现在需要做的就是确保 Twilio 可以访问 your-vcard-url
,并且它的 mime 类型设置为 text/vcard
。
换句话说,您不能只通过短信发送 vcard 的内容,而是需要告诉 Twilio vcard 的实际位置,因此它会将其包含在消息中。
电子名片的有效 URL 示例为 this one。希望对你有帮助
如何发送
要在 Twilio 中发送名片非常简单,使用这个 curl 命令它应该可以工作:
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>
您实际上可以使用请求中链接的 vCard 进行测试。
什么会出错
如果您的 header 配置不正确,名片将不会在您的 iOS/Android phone 上正确呈现,即使它看起来是正确的名片。
Headers
iOS 上的名片只能显示与您的文件相同的文本,因此请使用与 filename
header 属性 相同的文件名13=] 它应该相应地工作
Content-Type: text/x-vcard
Content-Disposition: inline; filename="<You file name>.vcf"
Cache-Control: no-cache
缓存文件
- 当 Twilio 第一次收到文件时,它会缓存
- 如果您相应地调整 headers 它不会影响 VCF 文件的传送,因为它将使用缓存版本
- 有办法克服这个问题
确保您从第一次就正确提交,否则您将不得不按照我在下面建议的更改
Twilio 缓存
要删除文件缓存或设置适当的缓存策略,请阅读:https://support.twilio.com/hc/en-us/articles/360024716314-How-Can-I-Change-the-Cache-Behavior-or-Message-Media-Files-
疑难解答我发现 Twilio 不会仅根据 VCF 文件的文件名更改缓存,而是根据文件内容本身,因此您必须修改文件才能清除缓存,而不仅仅是名字.