In diesem Dokument lernen Sie Twilio, eine Kommunikations-API, mit Python.
Der Inhalt besteht aus den folgenden fünf.
--Lektion 1. Versuchen Sie, mit RestAPI einen Anruf zu tätigen --Lektion 2 Versuchen Sie, die ursprüngliche Nachricht abzuspielen --Lektion 3. Versuchen Sie, den Browser als Telefon zu verwenden --Lektion 4. Senden Sie spracherkannte Inhalte per SMS --Lektion 5. Fax senden und empfangen
Eine Übersicht über Twilio finden Sie auf der folgenden Website. https://twilio.kddi-web.com
Python
Da diesmal Python 3.x verwendet wird, bereiten Sie bitte die Ausführungsumgebung (Arbeitsordner) für Python 3 vor. Verwenden Sie den folgenden Befehl, um die Python-Version herauszufinden.
$ python --version
Python 3.7.2
Da pip zum Installieren der Bibliothek verwendet wird, stellen Sie bitte sicher, dass pip zusammen mit Python verwendet werden kann. https://pip.pypa.io/en/stable/installing/
ngrok
Um Twilio verwenden zu können, benötigen Sie einen öffentlichen Server, auf den von Twilio aus zugegriffen werden kann. Dieses Mal werden wir keinen Server erstellen, sondern ngrok verwenden, um die lokale Umgebung von außen zugänglich zu machen. Laden Sie ngrok von der folgenden Site herunter und extrahieren Sie es. https://ngrok.com/
Twilio
Wenn Sie kein Twilio-Konto haben, erstellen Sie zuerst ein Testkonto. In diesem Artikel erfahren Sie, wie Sie sich kostenlos anmelden können. [Neueste Version] Twilio-Anmeldung
Sie können nur eine Telefonnummer mit Ihrem Testkonto erwerben. Außerdem kann nur die authentifizierte Telefonnummer als Ziel verwendet werden. Wenn Sie eine Telefonnummer anrufen oder mehrere Telefonnummern erwerben möchten, registrieren Sie bitte Ihre Zahlungsinformationen (Karteninformationen) und Kaufpunkte.
In dieser Lektion erwerben Sie zunächst eine Telefonnummer über die Administratorkonsole von Twilio. Installieren Sie dann die Python-Hilfsbibliothek und schreiben Sie den Code, um den Aufruf zu tätigen. Derzeit müssen Sie Ihre Adressinformationen im Voraus registrieren, um eine japanische Telefonnummer zu erwerben. Informationen zum Registrieren von Adressinformationen finden Sie im folgenden Artikel. So registrieren Sie eine Adresse in einer Telefonnummer bei Twilio
Melden Sie sich bei der Administratorkonsole von Twilio an. https://jp.twilio.com/login/kddi-web
Klicken Sie auf das Schaltflächensymbol, um das Folienmenü zu öffnen und wählen Sie Telefonnummer.
Wählen Sie Nummer kaufen, um den Bildschirm zum Kauf einer Telefonnummer zu öffnen.
Stellen Sie sicher, dass "Japan (+81)" für das Land ausgewählt ist, aktivieren Sie "Sprachanruf" und "Fax" und drücken Sie die Suchtaste.
Wählen Sie eine aus der angezeigten Liste aus und klicken Sie auf die Schaltfläche "Kaufen".
Wenn das Dialogfeld Diese Nummer kaufen angezeigt wird, klicken Sie auf die Schaltfläche Diese Nummer kaufen.
Wenn das Dialogfeld "Glückwünsche" angezeigt wird, ist der Nummernkauf abgeschlossen. Klicken Sie auf die Schaltfläche "Schließen", um den Dialog zu schließen.
Twilio hat eine Hilfsbibliothek für Python, installieren Sie sie also zuerst.
$ pip install twilio
Die neueste Version vom 24.09.2019 ist 6.31.0. Wenn eine niedrigere Version installiert ist, installieren Sie sie mit der Option -U. Die neueste Version finden Sie auf der folgenden Website. https://github.com/twilio/twilio-python/
Melden Sie sich bei der Administratorkonsole von Twilio an. https://jp.twilio.com/login/kddi-web
Kopieren Sie die in der Kontoübersicht des Konsolen-Dashboards angezeigten Werte für ACCOUNT SID und AUTH TOKEN in den Editor.
from twilio.rest import Client
account_sid = "ACxxxxxxxxx" # Your Account SID from www.twilio.com/console
auth_token = "xxxxxxxx" # Your Auth Token from www.twilio.com/console
client = Client(account_sid, auth_token)
call = client.calls.create(
to="+81xxxxxxx",
from_="+81xxxxxxx",
url="http://demo.twilio.com/docs/voice.xml"
)
print(call.sid)
$ python call.py
Lassen Sie uns den obigen Code überprüfen. Um einen Anruf zu tätigen, rufen Sie calls.create auf. In diesem Fall kann die Quelle (from_) [* from nicht als reserviertes Wort verwendet werden, daher wird sie from_ *] und das Ziel (to) wird angegeben. Der Punkt ist der durch die URL angegebene Teil. Geben Sie hier XML (TwiML genannt) an, um anzugeben, was zu tun ist, wenn der andere Teilnehmer antwortet. Das diesmal angegebene TwiML ist eine XML-Datei, wie unten gezeigt.
<Response>
<Say voice="alice">Thanks for trying our documentation. Enjoy!</Say>
<Play>http://demo.twilio.com/docs/classic.mp3</Play>
</Response>
Das Verb
In dieser Lektion werden Sie versuchen, Ihre eigene Originalnachricht zu senden. Dazu müssen Sie eine TwiML erstellen, die die Nachricht beschreibt, die Sie senden möchten, und sie an einem Ort platzieren, auf den Twilio über http oder https zugreifen kann. Unter der folgenden URL finden Sie ein Dokument darüber, welche Art von TwiML verfügbar ist. https://jp.twilio.com/docs/api/twiml
Um es von Twilio aus zugänglich zu machen, werden wir diesmal Flask als Webframework verwenden. Der Kolben kann wie folgt installiert werden.
$ pip install Flask
# say.py
from flask import Flask
from twilio.twiml.voice_response import VoiceResponse
app = Flask(__name__)
@app.route('/say', methods=['GET', 'POST'])
def say():
#Erstellen Sie TwiML
resp = VoiceResponse()
resp.say("Hallo. Twirio macht viel Spaß.", language="ja-JP", voice="alice")
return str(resp)
if __name__ == "__main__":
app.run(port=5000, debug=True)
$ python say.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 219-682-997
Verwenden Sie ngrok, um das erstellte Python-Programm nach außen zu veröffentlichen.
$ ngrok http 5000
from twilio.rest import Client
account_sid = "ACxxxxxxxxxxx" # Your Account SID from www.twilio.com/console
auth_token = "xxxxxxxxxxxx" # Your Auth Token from www.twilio.com/console
client = Client(account_sid, auth_token)
call = client.calls.create(
to="+81xxxxxxxxxx",
from_="+8150xxxxxxxx",
url="https://xxxxxxx.ngrok.io/say"
)
print(call.sid)
$ python call.py
Say.py erstellt das ursprüngliche TwiML. Mit der Python-Hilfsbibliothek von Twilio können Sie auch problemlos TwiML erstellen. Importieren Sie twilio.twiml.voice_response im Voraus, um eine sprachbasierte TwiML zu erstellen. Um Japanisch zu sprechen, geben Sie language = 'ja-JP' und voice = 'alice' an. Wenn Sie einen zu langen Satz schreiben, wird er möglicherweise nicht richtig gesprochen. Teilen Sie in einem solchen Fall das Say-Verb in mehrere Teile. Mit diesem Beispiel habe ich auch das Gefühl, dass Japanisch furchterregend ist. Wenn Sie fließend Japanisch sprechen möchten, verwenden Sie "Polly.Mizuki" oder "Polly.Takumi" für den Sprachparameter im TwiML-Generierungsteil (siehe Code unten) und sprechen Sie in relativ sauberem Japanisch. Werde es tun. Es kostet ein wenig Geld, aber wenn Sie schönes Japanisch verwenden möchten, versuchen Sie es bitte.
~ Abkürzung ~
def say():
#Erstellen Sie TwiML
resp = VoiceResponse()
resp.say("Hallo. Twirio macht viel Spaß.", language="ja-JP", voice="Polly.Mizuki")
return str(resp)
~ Abkürzung ~
Darüber hinaus kann beispielsweise die Sprachsynthesetechnologie von AI kombiniert werden.
Sie wissen vielleicht nicht, was Sie sagen, aber mit Twilio können Sie Ihren üblichen Browser als Telefon verwenden. Ja, Sie können mit einem Browser anrufen. In dieser Lektion verwenden Sie den Browser als Telefon und versuchen, über den Browser einen Anruf zu tätigen. Das Senden und Empfangen über einen Browser verwendet eine Funktion namens Twilio Client, zum Senden und Empfangen ist jedoch ein Mechanismus erforderlich, der als Zugriffstoken bezeichnet wird. Ein Zugriffstoken ist ein Authentifizierungsschlüssel, mit dem Sie die Telefonfunktionen mit Twilio verwenden können. Sie können ihn erhalten, indem Sie Twilio auffordern, ein Zugriffstoken von der Benutzerseite auszustellen. Es braucht Zeit, um diese Mechanismen von Grund auf neu zu erstellen, daher werden wir dieses Mal den im Voraus vorbereiteten Schnellstart verwenden. In dieser Lektion wird ngrok wie zuvor verwendet.
Wenn Sie Git verwenden können, verwenden Sie den folgenden Befehl, um die Quelldatei in Ihr Arbeitsverzeichnis zu klonen.
$ git clone https://github.com/TwilioDevEd/client-quickstart-python.git
Wenn Sie Git nicht verwenden können, laden Sie die Zip-Datei von der folgenden URL herunter und extrahieren Sie sie in Ihr Arbeitsverzeichnis. https://github.com/TwilioDevEd/client-quickstart-python/archive/master.zip
Wechseln Sie in das geklonte (extrahierte) Verzeichnis.
$ cd client-quickstart-python
Erstellen Sie eine .env-Datei, indem Sie die .env-Beispieldatei kopieren.
$ cp .env.example .env
Für Windows-Benutzer
$ cp .env.example.ps1 .env.ps1
Öffnen Sie .env oder .env.ps1 mit einem Editor und legen Sie Umgebungsvariablen fest.
.env
export TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export TWILIO_AUTH_TOKEN=your_auth_token
export TWILIO_TWIML_APP_SID=APXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export TWILIO_CALLER_ID=+1XXXYYYZZZZ
Geben Sie für TWILIO_ACCOUNT_SID und TWILIO_AUTH_TOKEN das in der vorherigen Lektion verwendete AccountSit und AuthToken ein. TWILIO_TWIML_APP_SID ist derzeit nicht bekannt. Lassen Sie es also in Ruhe. Schreiben Sie in TWILIO_CALLER_ID die gekaufte 050-Nummer im E.164-Format. Speichern Sie die Einstellungen nach Abschluss der Einstellungen durch Überschreiben.
Legen Sie die Umgebungsvariablen mit dem folgenden Befehl fest.
$ source .env
Verwenden Sie für Windows-Benutzer den folgenden Befehl zum Festlegen.
. .\.env.ps1
Verwenden Sie den folgenden Befehl, um die erforderliche Bibliothek zu laden.
$ pip install -r requirements.txt
Die Bibliotheken, die diesmal verwendet werden, sind Flask, Twilio und Fake-Factory.
$ ngrok http 5000
Wenn ngrok gestartet wird, notieren Sie die angezeigte URL (https) im Editor.
Wählen Sie die erneut erstellten TwiML-Apps aus und notieren Sie sich die Anwendungs-SID.
Veröffentlichen Sie die schriftliche Anwendungs-SID in der zuvor bearbeiteten .env-Datei in TWILIO_TWIML_APP_SID.
Schließen Sie die laufende Anwendung (app.py) einmal (Strg-C).
Laden Sie die Umgebungsvariablen neu.
$ source .env
$ python app.py
Wenn Twilio Device Ready! Wie auf dem Bildschirm angezeigt wird, können Sie einen Anruf tätigen. Geben Sie beim Tätigen eines Anrufs die Telefonnummer im E.164-Format an.
Öffnen Sie app.py in einem Editor und überprüfen Sie es. Es gibt zwei große Codes, einen zum Abrufen des Zugriffstokens / Tokens und einen zum Tätigen eines Anrufs / einer Stimme. In / token wird ein ClientCapbilityToken-Objekt erstellt und zwei Einstellungen festgelegt: allow_client_outgoing (application_sid) und allow_client_incoming (Identität). Ersteres ist die Einstellung für ausgehende Token und letzteres ist die Einstellung für eingehende Anrufe. Die TwiML Apps SID ist für das ausgehende Token angegeben, wodurch Twilio anrufen / sprechen kann, wenn die ausgehende Anweisung vom Browser empfangen wird. Darüber hinaus legt das Token für eingehende Anrufe eine eigene Identität fest, sodass andere Clients die Identität als Ziel für den Empfang eines Anrufs angeben können. / voice ist eine URL, die von Twilio beim Tätigen eines Anrufs aufgerufen wird, und die Zielnummer wird als To-Parameter übergeben. Wenn Twilio dies als Wählverb zurückgibt, ruft er Sie an. Diesmal ist der eingehende Anruf mit der Nummer 050 nicht implementiert. Wenn Sie ihn jedoch implementieren möchten, verwenden Sie die Verwaltungskonsole von Twilio, geben Sie die eingehende Verarbeitung der Nummer 050 an und verwenden Sie TwiML für das an die Identität adressierte Wählverb. Es ist in Ordnung, wenn Sie es zurückgeben. Der Code auf der Front-End-Seite befindet sich in quickstart.js im statischen Ordner. Wenn die Seite geladen wird, können Sie sehen, dass Sie Ajax verwenden, um das Zugriffstoken abzurufen. Wenn das Token erfolgreich erfasst wurde, wird das Gerät mit dem erfassten Token initialisiert. Wenn die Initialisierung abgeschlossen ist, wird das Ereignis Device.ready ausgelöst. Zusätzlich zur Bereitschaft hat das Gerät einige wichtige Ereignisse. Diese Ereignisse werden in den folgenden Dokumenten beschrieben: https://jp.twilio.com/docs/api/client/device
In dieser Lektion kombinieren Sie die Spracherkennungstechnologie und die SMS-Übertragungstechnologie von Twilio, um ein Programm zu erstellen, das Sprache aufzeichnet und in Zeichen umwandelt, wenn eine 050-Nummer erreicht ist, und diese per SMS an den Anrufer zurücksendet. Sie können die 050-Nummer nicht zum Senden von SMS verwenden. Kaufen Sie daher eine neue US-Nummer. ** Sie müssen Ihr Twilio-Testkonto aktualisieren. ** ** **
# app.py
from flask import Flask, request, Response
from twilio.rest import Client
from twilio.twiml.voice_response import Gather, VoiceResponse, Say
app = Flask(__name__)
account_sid = "ACxxxxxxxxxxxxxxxxxxxxxx"
auth_token = "xxxxxxxxxxxxxxxxxxxxxxx"
client = Client(account_sid, auth_token)
@app.route('/calling', methods=['GET', 'POST'])
def calling():
#WebHook hat angerufen, wenn ein Anruf eingeht
response = VoiceResponse()
gather = Gather(input='speech', language='ja-JP', action='/sendsms', method='POST')
gather.say('Danke für den Anruf. Bitte geben Sie mir eine Nachricht.', language='ja-JP', voice='alice')
response.append(gather)
return str(response)
@app.route('/sendsms', methods=['POST'])
def sendsms():
#Erhalten Sie Spracherkennungsergebnisse
result = request.form["SpeechResult"] or ''
to = request.form["From"] or ''
if (result != '' and to != ''):
#SMS senden
message = client.messages.create(to=to,
from_="+1XXXXXXXXXXXX",
body=result)
print(message.sid)
resp = VoiceResponse()
resp.say("Ich habe dir eine Nachricht geschickt. Vielen Dank.", language="ja-JP", voice="alice")
return str(resp)
else:
resp = VoiceResponse()
resp.say("Es tut mir Leid. Spracherkennung war nicht möglich.", language="ja-JP", voice="alice")
return str(resp)
if __name__ == "__main__":
app.run(port=5000, debug=True)
$ python app.py
$ ngrok http 5000
Wenn ngrok gestartet wird, notieren Sie die URL, die mit https beginnt.
Das durch Aufrufen erzeugte Gather-Verb ist ursprünglich ein Verb zur Verarbeitung von DTMF-Signalen (Push-Tone-Signalen), es ist jedoch auch möglich, zusätzlich zu DTMF Sprachdaten zu erfassen. Die Sprachdaten werden intern an die Spracherkennungs-Engine übergeben, und das Ergebnis wird an den durch den Aktionsparameter angegebenen Webhook gesendet. Audio kann bis zu 60 Sekunden lang aufgezeichnet werden. Für jede Konvertierung (15-Sekunden-Einheit) wird zusätzlich zur Anrufgebühr eine zusätzliche Gebühr von 3 Yen erhoben. Diesmal wurde die SMS wie nach der Spracherkennung gesendet, es ist jedoch auch möglich, einen BOT mithilfe von Sprache zu erstellen, indem beispielsweise die Konversations-API von IBM Watson verwendet wird.
In dieser Lektion verwenden Sie die Funktion Programmierbares Fax zum Senden und Empfangen von Faxen. Aus globaler Sicht ist Japan immer noch ein Land, in dem Faxe immer noch häufig verwendet werden, und es gibt viele Möglichkeiten, sie zu verwenden, z. B. das Senden von Faxen aus Programmen und die automatische Verarbeitung empfangener Faxe. Sie können die 050-Nummer zum Senden und Empfangen von Faxen verwenden, aber Sie können keine Sprachanrufe oder Faxe mit derselben 050-Nummer empfangen. Dieses Mal werde ich die bereits gekaufte 050-Nummer für FAX wechseln und verwenden.
$ git clone https://github.com/twilioforkwc/simpleFAX.git
$ cd simpleFAX
$ mv example.env .env
$ source .env
$ python app.py
$ ngrok http 3000
Notieren Sie sich die https-URL, die Sie gestartet haben.
Beispiel: https://xxxxxx.ngrok.io/sendfax?to=03XXXXXXXX&pdf=xxxxxx.pdf
Die app.py ist groß und enthält zwei Codes, einen zum Senden (sendfax) und einen zum Empfangen (receive, actionReceiver).
Sendfax zum Senden enthält den Code zum Senden eines Faxes über die Rest-API. Momentan unterstützt die Hilfsbibliothek für Python kein FAX, daher wird sie mithilfe der Anforderungsbibliothek realisiert.
Um festzustellen, ob die Übertragung erfolgreich war, muss zum Zeitpunkt der Übertragung statusCallback in der RestAPI angegeben oder die RestAPI unter Verwendung der FAX-SID aufgerufen werden, die zum Zeitpunkt der Übertragung im Rückgabewert der RestAPI enthalten ist. Dieser Vorgang wird in diesem Programm jedoch weggelassen. tun.
Der Empfang zum Empfang ist der erste Webhook, der aufgerufen wird, wenn ein Fax unter der Twilio-Nummer eintrifft. Hier müssen Sie entweder das Verb
Weitere Dokumentation zu programmierbaren Faxen finden Sie unten. https://jp.twilio.com/docs/api/fax
Dieses Mal haben wir den Fall der Verwendung von Python vorgestellt, aber zusätzlich zu Python haben wir auch SDKs für Sprachen wie Node.js, C #, Java, Ruby, PHP und Salesforce. Weitere Informationen finden Sie unter hier.
https://twilio.kddi-web.com Twilio ist ein Cloud-API-Dienst, mit dem Sie verschiedene Kommunikationsmethoden wie Sprachanrufe, Messaging (SMS / Chat) und Video problemlos in Ihre Anwendungen und Unternehmen integrieren können. Es handelt sich um ein Pay-as-you-go-System, das keine anfänglichen Kosten erfordert und mit verschiedenen Entwicklungssprachen kompatibel ist. Daher wird es auch für viele Hackathon-Events und Startups verwendet.
Recommended Posts