2017-09-21 3 views
3

Ich verwende Twilio PHP Library, und ich möchte SMS-Nachrichten an eine große Liste von Menschen mit Twilio PHP REST API senden. Ich habe eine Textdatei, die die Liste der eindeutigen Telefonnummern (ungefähr 1000 Mitglieder) enthält.Senden Sie Bulk SMS über Twilio Rest API mit PHP

Derzeit war mein Plan, einen Cron-Job zu erstellen, der die Textdatei analysiert und einen REST-API-Aufruf für jede der Telefonnummern in der Datei durchführt.

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" 
    ) 
); 

Aber ich wissen wollte, ob Twilio kann für mich die Arbeit tun (wie ich die Textdatei Twilio laden, und Twilio wird die Datei und sendet SMS an jede Nummer verarbeiten drin).

Gibt es eine Option wie diese mit Twilio? Ich habe über die Bulk-SMS-Option here gelesen, aber das scheint wie eine statische Nachricht an alle Benutzer sendet. Ich muss eindeutige Nachricht an jeden Benutzer senden. Wie ist das mit Twilio möglich? Lass es mich wissen, bitte.

EDIT: 27-09-2017: Ich habe über Twilio COPILOT, gehört aber nicht sicher, wie das Service zu nutzen.

+1

Warum nicht fragen https://support.twilio.com/hc/en-us/requests/new? Es ist keine Programmierfrage. –

+1

Woher kommt diese "eindeutige Nachricht an jeden Benutzer", wenn Sie eine Textdatei mit Zahlen an Twilio hochladen möchten? –

+0

@AlexBaban Ich kann auch eine Web-Service-URL angeben, die für jeden Anruf eine eindeutige Nachricht ausgibt, mit der Twilio wahrscheinlich Nachrichten an Benutzer senden kann, während die Textdatei analysiert wird. –

Antwort

1

Twilio Entwickler Evangelist hier.

Nur um Ihr Problem zu destillieren, müssen Sie etwa 1000 eindeutige Nachrichten an die Benutzer senden, richtig?

Wenn das der Fall ist, dann müssen Sie das tun.

Da die Nachricht für jede Nummer eindeutig ist, müssen Sie einzeln make an API call to the Twilio REST API to send each message. Twilio kappt die Nachricht mit 1 Nachricht pro Nummer pro Sekunde. Wenn Sie dieses Limit bereits überschritten haben, stellt Twilio diese Nachrichten für Sie bereit. Es sollte nicht 5 Sekunden pro API-Aufruf dauern.

Dies ist der Fall, wenn Sie eine Nummer verwenden, wie in Ihrem ursprünglichen Beispiel. Für 1000 Nachrichten dauert es fast 17 Minuten, um alle zu senden.

Sie können jedoch einen Messaging-Dienst verwenden, um dies zu beschleunigen. Ein Messaging-Dienst ist ein Pool von Nummern und anderen Diensten, die von Copilot bereitgestellt werden (einschließlich geografisch übereinstimmender Nummern, alphanumerischer Absender-Fallback und anderer solcher Dinge). Für das Senden vieler Nachrichten, wie in diesem Fall, ist der Nummernpool der wichtige Teil, da jede Twilio-Nummer, von der Sie senden, 1 Nachricht pro Sekunde senden kann. Wenn Sie also dem Mitteilungsdienst 2 Nummern hinzufügen, können Sie 2 Nachrichten pro Sekunde senden. Wenn Sie dem Pool 10 Nummern hinzufügen, können Sie 10 Sekunden lang senden.

Um Nachrichten über einen Messaging-Dienst und einen Nummernpool zu senden, müssen Sie create a messaging service in your Twilio console. Fügen Sie Nummern für den Pool hinzu oder kaufen Sie sie. Dann erhalten die Messaging-Dienst SID:

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

Anschließend können Sie den Messaging-Dienst SID anstelle der von der Nummer in Ihrem Aufruf an die API verwenden.

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

Dann werden Ihre Nachrichten vom Messaging-Dienst aufgefächert.

Insbesondere, wenn Sie 1000 Nachrichten an einem Tag senden müssen, empfehlen wir, dass Sie über mindestens 4 Nummern verteilen, da US-Carrier beginnen, lange Code-Nummern, die mehr als das sind, zu blockieren. Check out mehr in unserem guidelines for sending SMS messages to the US.

Lassen Sie mich wissen, ob das überhaupt hilft.

+0

Das hilft definitiv sehr. Danke für deine Antwort. Ich habe eine Frage bezüglich des Sendens von Nachrichten. Wo sollte ich in Ihrem Code die Mehrfachnummern angeben? Soweit ich sehen kann, gibt es nur eine Nummer ('+ 1xxxxxxxxx'). Kann ich daraus eine Reihe von 1000 Zahlen machen? –

+1

Oh, Entschuldigung. Sie müssten über Ihre 1000 Nummern iterieren und $ client-> messages-> create' für jeden von ihnen aufrufen. – philnash

+0

Ich würde es versuchen und lassen Sie wissen, wie es ging ... danke für die schnelle Antwort :) –

-1

Haben Sie die Möglichkeit, eine SQL-Verbindung zu erstellen? 1 Spalte für die zu rufende Nummer, eine Spalte für den Nachrichteninhalt?

Sie können dann die Zeilen in der Tabelle mit Ihrem obigen Skript durchlaufen, um Ihre Nachrichten einzeln nacheinander auszulösen.

//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

Diese Idee scheint als Cron-Job gut zu sein, aber 1000 Datensätze durchlaufen zu müssen und Nachrichten nacheinander zu senden dauert mehr als eine Stunde (angenommen 5 Sekunden pro API-Aufruf). Ich erwarte eine einfachere Lösung von Twilio. –