Как отправить текст с номера мобильного телефона пользователя с помощью Twilio?
Я хочу программно отправлять SMS / текстовые сообщения из моего приложения Meteor; Многие люди рекомендуют Twilio для этого, и есть несколько пакетов Meteor Twilio (которые можно найти через атмосферу и / или поиск в Google). Я не знаю, является ли один из этих пакетов определенно лучше другого, но сейчас, по крайней мере, я использую пакет abhiaayer:meteor-twilio.
Меня беспокоит то, что когда вы создаете учетную запись Twilio, вам присваивается номер телефона "от" (очевидно, вы не можете просто использовать свой собственный). Возможно, я неправильно понимаю, как это работает, но прежде чем я зайду слишком далеко по этому пути, я хочу знать, сможет ли отправитель SMS - IOW пользователь моего приложения - использовать свой номер телефона в качестве " от "/ номер телефона отправителя.
В конце концов, весь смысл моего приложения состоит в том, чтобы позволить пользователю отправлять несколько идентичных текстов (например, "где ты?" Или "ты в порядке?") Друзьям / семье, а затем получать ответ от них (на его телефон, а не на номер, предоставленный Twilio).
Если возможно использовать Twilio с вашим собственным номером телефона в качестве номера отправителя / отправителя, есть ли у кого-нибудь предложения о предпочтениях пакета Meteor (abhiaayer, andreioprisan, DispatchMe) и как это можно сделать с помощью Meteor?
Я полагаю, что основной код был бы почти одинаковым, независимо от используемого пакета; например, вот пример из пакета andreioprisan
twilio = Twilio(ACCOUNT_SID, AUTH_TOKEN);
twilio.sendSms({
to:'+16515556677', // Any number Twilio can deliver to
from: '+14506667788', // A number you bought from Twilio and can use for outbound communication
body: 'word to your mother.' // body of the SMS message
}, function(err, responseData) { //this function is executed when a response is received from Twilio
if (!err) { // "err" is an error received during the request, if any
// "responseData" is a JavaScript object containing data received from Twilio.
// A sample response from sending an SMS message is here (click "JSON" to see how the data appears in JavaScript):
// http://www.twilio.com/docs/api/rest/sending-sms#example-1
console.log(responseData.from); // outputs "+14506667788"
console.log(responseData.body); // outputs "word to your mother."
}
});
Я создал учетную запись Twilio, и у меня был номер "от" (не фактический номер мобильного телефона), которым они присвоили мою учетную запись, и SID, но я не знаю, каким должен быть AUTH_TOKEN.
Если то, что я намерен сделать из Twilio, невозможно, я могу просто написать приложение, чтобы все выбранные номера "до" можно было скопировать в буфер обмена, чтобы пользователь мог вставить их в текстовое поле "получатели" своего экрана SMS.; но я надеялся позволить пользователю роскошь простого нажатия кнопки.
1 ответ
Я не думаю, что вы можете сделать это (отправить с собственного номера пользователя с помощью Twilio). Если ваше приложение является настоящим мобильным приложением, а не веб-приложением, вы можете использовать API Android или iOS для отправки SMS с телефона пользователя. Я не уверен в деталях этого и, конечно, с iOS, похоже, что вы не можете сделать это полностью автоматически по очевидным причинам (вы можете просто спамить все контакты пользователя, например, и это будет стоить пользователю денег)).
Здесь есть плагин Cordova, который может делать то, что вы хотите: https://github.com/cordova-sms/cordova-sms-plugin (я не использовал его, поэтому не могу ручаться за него, но, похоже, он активно поддерживается).
Если это веб-приложение, ваши предложения о копировании чисел в буфер обмена - безусловно, самое простое решение, и я бы рекомендовал это в первую очередь. Для полноты я привел ниже некоторые детали и соображения о том, как можно выполнить двустороннюю связь с Twilio (или альтернативами, такими как Nexmo) несколькими способами, на случай, если кто-то сочтет это полезным. Это не совсем тривиально, хотя. Одностороннее общение намного проще!
Отправить через API
Из вашего приложения пользователь вводит сообщение и выбирает, кому его отправить. Затем приложение подключается к вашему серверу, который использует Twilio API для отправки N сообщений N получателям. Эти сообщения будут появляться с номера, предоставленного Twilio.
Отправить через СМС
Пользователь вручную отправляет SMS на ваш номер Twilio, а затем вы получаете веб-крючок на ваш сервер от Twilio с подробностями сообщения. Вы должны выполнить обработку, чтобы определить, кому переслать сообщение, а затем использовать для этого Twilio API. Снова получатели увидят сообщение с предоставленного Twilio номера.
Ответы
Когда получатель отвечает на сообщение, Twilio отправляет вам веб-крючок с подробной информацией, и вы можете определить, кто отправил исходное сообщение, и переслать ответ обратно исходному отправителю.
Объединение номеров
Один из очевидных недостатков заключается в том, что если несколько пользователей отправляют сообщение одному и тому же человеку, то невозможно определить, на какое сообщение они отвечают. С помощью SMS не передаются идентификаторы сообщений, поэтому вам нужно использовать несколько номеров для отправки (по одному на каждого уникального отправителя конкретному получателю). Требуемое количество номеров - это, как правило, наибольшее количество разных отправителей, на которое один пользователь должен ответить (обычно это невозможно решить заранее, поэтому вам придется вызывать API для предоставления нового номера на лету).
Чтобы привести более конкретный пример, скажем, у вас есть 2 пользователя (S1 и S2) и 3 получателя (R1, R2 и R3). У вас есть 1 предоставленный Twilio номер (N1).
S1 отправляет сообщение на R1 через ваше приложение, вы используете N1 для отправки сообщения через Twilio API. R1 получает сообщение от N1. Если они ответят, вы получите сообщение N1 от R1, чтобы вы знали, что вам нужно переслать его на S1.
S1 отправляет сообщение R2 через ваше приложение, R2 еще не получил никаких сообщений, поэтому вы можете повторно использовать N1 для отправки сообщения. R2 отвечает на N1, и снова вы можете переслать его на S1. Если это доставлено в приложении, проблем больше нет, если ответ пересылается с помощью SMS, нам нужно предоставить новый номер (N2), чтобы S1 мог ответить на ответ R2.
S2 отправляет сообщение на R3 через ваше приложение, как и раньше, вы можете повторно использовать N1 и по-прежнему правильно направлять ответ.
Теперь, если S2 отправляет сообщение в R1, мы понимаем, что R1 уже получил сообщения от S1, используя номер N1. В этом случае мы не можем использовать N1, потому что мы не можем определить, для кого был предназначен ответ. Если мы еще этого не сделали, нам нужно предоставить новый номер (N2), и теперь мы можем отправить сообщение, чтобы R1. Когда R1 отвечает на N2, мы знаем, что ответ должен быть перенаправлен на S2.
Чем больше пользователей отправляют одному получателю, тем больше (и дороже) ваш пул номеров. Вероятно, стоит установить какое-то время ожидания (скажем, 72 часа), в течение которого получатель может ответить. Таким образом, в этом случае, если время ожидания истекло после того, как S1 отправил сообщение на R1 через N1, мы могли бы повторно использовать N1 для связи между S2 и R1. Очевидно, что это не совсем надежно, но это может снизить затраты.
тождественность
Другая проблема с отправкой с пула номера. Я посылаю сообщение Дэну через приложение, и он получает это сообщение со случайного числа:
Привет, Дэн, как ты?
Как Дэн узнал, кто отправил сообщение? Вы должны добавить какой-либо идентификатор к каждому сообщению (или, по крайней мере, первый в каждой цепочке сообщений).