Massenhafte Telefonanrufe mit sipgate.io

Sipgate hat mit sipgate.io eine spannende Cloud-API geschaffen, mit der man eine Vielzahl an Möglichkeiten rund um Internet-Telefonie hat. Dabei ist ein Account kostenlos, auch gibt es im Feature Store u.a. kostenlos die Möglichkeit, eine beliebige freie Absendernummer zu setzen. Die Dokumentation von sipgate.io ist noch ausbaufähig, doch mit etwas Einlesen in die offizielle Sipgate API kann man schnell spannende Sachen realisieren.


In dem folgenden Code realisieren wir folgendes Verhalten: Wir rufen zu Testzwecken ein Dutzend Telefonnummern nacheinander an, um jeweils eine Audio-Datei abzuspielen und anschließend wieder aufzulegen.

2e92bf96cdada9545cb8525ec68a7d6b

Dabei muss die PHP-Extension XML-RPC installiert sein. Die Anrufe werden nun getätigt - um nun die Audio-Datei abzuspielen, tragen wir im Sipgate-Backend bei den ausgehenden Anrufen (wenn wir selbst anrufen) sowie bei den eingehenden Anrufen (sollte jemand zurückrufen) jeweils eine Trigger-URL ein und aktivieren das Debug-Log:

Massenhafte Telefonanrufe mit sipgate.io

Nun bereiten wir eine Audio-Datei vor (die lt. Dokumentation als mono 16bit PCM WAV Datei vorliegen muss). Dazu werfen wir ffmpeg an, um eine MP3-Datei in das gewünschte Format zu konvertieren:

2e92bf96cdada9545cb8525ec68a7d6b

Nun laden wir diese WAV-Datei zusammen mit dem folgenden XML-Script nach https://www.tld.com/sipgate/:

2e92bf96cdada9545cb8525ec68a7d6b

Wenn man mit den Audiodateien variieren will, empfiehlt es sich aus Cache-Gründen, stets einen neuen Dateinamen (sound-v*.wav) zu verwenden.

Auf parallele Anrufe sind möglich (laut offizieller Aussage von Sipgate gibt es hier eine Beschränkung von 5 gleichzeitigen Verbindungen, ich konnte jedoch schon mehr herstellen), hierbei sollte man dann am sleep-Wert etwas justieren.

Update 03/2022: Inzwischen hat Sipgate die genutzte XML-RPC Schnittstelle endgültig deprecated. Deshalb ist die Lösung oberhalb nicht mehr nutzbar. Eine stabile Alternative stellen beispielsweise Kommandozeilentools wie baresip für Linux (mit Hilfe des alsa-Moduls und dem Befehl /ausrc aufile,audio.wav) oder tSIP für Windows dar. Anbei eine kleine Implementierung in PHP, die mit Hilfe von tSIP eine beliebige Rufnummer wählt und eine Audiodatei abspielt:

7d1db430a89467d76748de53cfb438bf

Zurück