2017-09-21 1 views
3

J'utilise Twilio PHP Library, et je veux envoyer des messages SMS à une grande liste de personnes qui utilisent l'API Twilio PHP REST. J'ai un fichier texte, qui contient la liste des numéros de téléphone uniques (environ 1000 membres).Envoyer des SMS en vrac via API Twilio Rest avec PHP

Actuellement, mon plan était de créer un travail cron, qui analyse le fichier texte, et effectue un appel API REST pour chacun des numéros de téléphone dans le fichier.

Ex:

<?php 
require_once 'vendor/autoload.php'; 
use Twilio\Rest\Client; 
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXX"; 
$token = "XXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$client = new Client($sid, $token); 

$sms_sent = $client->messages->create(
    '+1xxxxxxxxxx', 
    array(
     'from' => '+1xxxxxxxxxx', 
     'body' => "XXXXXX XXXXXX", 
     'statusCallback' => "http://myapplication_callback_url" 
    ) 
); 

Mais je voulais savoir, si Twilio peut faire le travail pour moi (comme je vais télécharger le fichier texte à Twilio, et Twilio traitera le dossier et envoyer des SMS à chaque numéro dedans).

Existe-t-il une option comme celle-ci avec Twilio? J'ai lu à propos de l'option SMS BULK here, mais il semble que cela envoie un message statique à tous les utilisateurs. Je dois envoyer un message unique à chaque utilisateur. Comment est-ce possible avec Twilio? S'il vous plaît, faites-moi savoir.

EDIT: 27-09-2017: J'ai entendu parler Twilio COPILOT, mais pas sûr de savoir comment utiliser ce service.

+1

Pourquoi ne pas demander https://support.twilio.com/hc/en-us/requests/new? Ce n'est pas vraiment une question de programmation. –

+1

D'où vient ce «message unique à chaque utilisateur» si ce que vous dites est que vous voulez télécharger un fichier texte avec des numéros vers Twilio? –

+0

@AlexBaban Je peux également spécifier une URL de service Web qui génère un message unique pour chaque appel, que Twilio peut probablement utiliser pour envoyer un message aux utilisateurs, tout en analysant le fichier texte. –

Répondre

1

Twilio développeur évangéliste ici.

Juste pour distiller votre problème, vous devez envoyer environ 1000 messages uniques aux utilisateurs, non?

Si c'est le cas, alors c'est ce que vous devez faire. Comme le message est unique à chaque numéro, vous devez individuellement make an API call to the Twilio REST API to send each message. Twilio plafonne le message envoyé à 1 message par numéro par seconde. Si vous avez déjà dépassé cette limite, Twilio mettra ces messages en file d'attente pour vous. Cela ne devrait pas prendre 5 secondes par appel d'API.

C'est le cas si vous utilisez un numéro, comme dans votre exemple original. Pour 1000 messages, il faudra presque 17 minutes pour les envoyer tous. Toutefois, vous pouvez utiliser un service de messagerie pour accélérer cette opération. Un service de messagerie est un ensemble de numéros et d'autres services fournis par Copilot (y compris les numéros de correspondance géographique, le renvoi d'expéditeur alphanumérique et d'autres éléments similaires). Pour envoyer beaucoup de messages, comme dans ce cas, le pool de numéros est la partie importante car chaque numéro Twilio que vous envoyez peut envoyer 1 message par seconde. Ainsi, si vous ajoutez 2 numéros au service de messagerie, vous pouvez envoyer 2 messages par seconde, si vous ajoutez 10 numéros au pool, vous pouvez en envoyer 10 par seconde.

Pour envoyer des messages à l'aide d'un service de messagerie et d'un pool de numéros, procédez comme suit: create a messaging service in your Twilio console. Ajouter ou acheter des numéros pour la piscine. Ensuite, obtenir le SID du service de messagerie:

Find the messaging service SID in your Twilio console where you created the service.

Vous pouvez alors utiliser le service de messagerie SID en place du numéro de votre appel à l'API.

$sms_sent = $client->messages->create(
    '+1xxxxxxxxxx', 
    array(
     'from' => 'MESSAGING SERVICE SID', 
     'body' => "XXXXXX XXXXXX", 
     'statusCallback' => "http://myapplication_callback_url" 
    ) 
); 

Ensuite, vos messages seront dépliés par le service de messagerie. Notamment, si vous devez envoyer 1000 messages par jour, nous vous recommandons de répartir ce nombre sur au moins 4 numéros, car les opérateurs américains commencent à bloquer les numéros de code longs qui sont utilisés plus que cela. Découvrez plus dans notre guidelines for sending SMS messages to the US. Faites-moi savoir si cela aide du tout.

+0

Cela aide vraiment beaucoup. Merci pour votre réponse. J'ai une question concernant l'envoi de messages. Dans votre code, où devrais-je spécifier les numéros multiples? Il n'y a qu'un seul nombre aussi loin que je peux voir ('+ 1xxxxxxxxxx'). Puis-je en faire un tableau de 1000 numéros? –

+1

Oh, désolé. Vous auriez besoin d'itérer sur vos 1000 numéros et d'appeler '$ client-> messages-> create' pour chacun d'entre eux. – philnash

+0

Je voudrais essayer et vous faire savoir comment ça s'est passé ... merci pour la réponse rapide :) –

-1

avez-vous la possibilité de créer une connexion SQL? 1 colonne pour héberger le numéro à appeler, une colonne pour le contenu du message?

Vous pouvez ensuite parcourir les lignes de la table avec votre script ci-dessus pour déclencher vos messages un à la fois.

//spaghetti code, will not work 
//1. Create MySQL Connection 
//2. loop through table 
foreach($row as $number=>$message) { 
$sms_sent = $client->messages->create(
    $number, 
    array(
     'from' => '+1xxxxxxxxxx', 
     'body' => $message, 
     'statusCallback' => "http://myapplication_callback_url" 
     ) 
    ); 
} 
+0

Cette idée semble être bonne en tant que tâche cron, mais faire une boucle sur 1000 enregistrements et envoyer les messages un par un prend plus d'une heure (en supposant 5 secondes par appel d'API). Je m'attends à une solution plus simple de Twilio. –