Ce document est le contenu pour apprendre Twilio, qui est une API de communication, utilisant Python.
Le contenu comprend les cinq éléments suivants.
Pour un aperçu de Twilio, veuillez consulter le site suivant. https://twilio.kddi-web.com
Python
Puisque Python 3.x sera utilisé cette fois-ci, veuillez préparer l'environnement d'exécution (dossier de travail) pour Python 3. Pour connaître la version Python, utilisez la commande suivante.
$ python --version
Python 3.7.2
Puisque pip est utilisé pour installer la bibliothèque, assurez-vous que pip peut être utilisé avec Python. https://pip.pypa.io/en/stable/installing/
ngrok
Pour utiliser Twilio, vous avez besoin d'un serveur public accessible depuis Twilio. Cette fois, nous ne construirons pas de serveur, mais utiliserons ngrok pour rendre l'environnement local accessible de l'extérieur. Téléchargez ngrok à partir du site suivant et extrayez-le. https://ngrok.com/
Twilio
Si vous n'avez pas de compte Twilio, obtenez d'abord un compte d'essai. Veuillez consulter cet article pour savoir comment vous inscrire gratuitement. [Dernière version] Inscription à Twilio
Vous ne pouvez acheter qu'un seul numéro de téléphone avec votre compte d'essai. De plus, seul le numéro de téléphone authentifié utilisé lors de l'inscription peut être utilisé comme destination. Si vous souhaitez appeler un numéro de téléphone ou acheter plusieurs numéros de téléphone, veuillez enregistrer vos informations de paiement (informations de carte) et acheter des points.
Dans cette leçon, vous allez d'abord acheter un numéro de téléphone à l'aide de la console d'administration de Twilio. Ensuite, installez la bibliothèque d'assistance Python et écrivez le code pour effectuer l'appel. Actuellement, pour acheter un numéro de téléphone japonais, vous devez enregistrer vos informations d'adresse à l'avance. Veuillez vous reporter à l'article suivant pour savoir comment enregistrer les informations d'adresse. Comment enregistrer une adresse dans un numéro de téléphone sur Twilio
Connectez-vous à la console d'administration de Twilio. https://jp.twilio.com/login/kddi-web
Cliquez sur l'icône du bouton pour ouvrir le menu déroulant et sélectionnez Numéro de téléphone.
Sélectionnez Acheter un numéro pour ouvrir l'écran d'achat d'un numéro de téléphone.
Assurez-vous que "Japon (+81)" est sélectionné pour le pays, cochez "Appel vocal" et "Fax" et appuyez sur le bouton de recherche.
Sélectionnez-en un dans la liste affichée et appuyez sur le bouton "Acheter".
Lorsque la boîte de dialogue Acheter ce numéro apparaît, appuyez sur le bouton Acheter ce numéro.
Lorsque la boîte de dialogue Félicitations apparaît, l'achat du numéro est terminé. Cliquez sur le bouton "Fermer" pour fermer la boîte de dialogue.
Twilio a une bibliothèque d'aide pour Python, alors installez-la d'abord.
$ pip install twilio
La dernière version au 24/09/2019 est la 6.31.0. Si une version inférieure est installée, installez-la avec l'option -U. La dernière version peut être trouvée sur le site suivant. https://github.com/twilio/twilio-python/
Connectez-vous à la console d'administration de Twilio. https://jp.twilio.com/login/kddi-web
Copiez les valeurs du SID DU COMPTE et du JETON AUTH affichées dans le récapitulatif du compte du tableau de bord de la console dans le Bloc-notes.
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
Vérifions le code ci-dessus. Pour passer un appel, appelez calls.create. Dans ce cas, la source (from_) [* from ne peut pas être utilisée comme un mot réservé, elle devient donc from_ *] et la destination (to) est spécifiée. Le point est la partie spécifiée par url. Ici, spécifiez XML (appelé TwiML) pour indiquer ce qu'il faut faire lorsque l'autre partie répond. Le TwiML spécifié cette fois est un fichier XML comme indiqué ci-dessous.
<Response>
<Say voice="alice">Thanks for trying our documentation. Enjoy!</Say>
<Play>http://demo.twilio.com/docs/classic.mp3</Play>
</Response>
Le verbe
Dans cette leçon, vous essaierez d'envoyer votre propre message original. Pour ce faire, vous devez créer un TwiML qui décrit le message que vous souhaitez envoyer et le placer dans un emplacement accessible depuis Twilio via http ou https. Il existe un document à l'adresse URL suivante sur le type de TwiML disponible. https://jp.twilio.com/docs/api/twiml
Afin de le rendre accessible depuis Twilio, nous utiliserons cette fois Flask comme framework web. Flask peut être installé en suivant les étapes ci-dessous.
$ 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():
#Créer TwiML
resp = VoiceResponse()
resp.say("Bonjour. Twirio est très amusant.", 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
Utilisez ngrok pour publier le programme Python créé vers l'extérieur.
$ 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 crée le TwiML original. Avec la bibliothèque d'assistance Python de Twilio, vous pouvez également créer facilement TwiML. Pour créer un TwiML basé sur la voix, importez à l'avance twilio.twiml.voice_response. Pour parler japonais, spécifiez language = 'ja-JP' et voice = 'alice'. Si vous écrivez une phrase trop longue, elle risque de ne pas être prononcée correctement. Dans ce cas, divisez le verbe Say en plusieurs parties. De plus, avec cet échantillon, je trouve que le japonais est terrifiant. Si vous voulez parler couramment japonais, utilisez "Polly.Mizuki" ou "Polly.Takumi" pour le paramètre de voix dans la partie qui génère TwiML (voir le code ci-dessous), et vous pouvez parler un japonais relativement propre. Le fera. Cela coûte un peu d'argent, mais si vous voulez utiliser de beaux japonais, essayez-le.
~ Abréviation ~
def say():
#Créer TwiML
resp = VoiceResponse()
resp.say("Bonjour. Twirio est très amusant.", language="ja-JP", voice="Polly.Mizuki")
return str(resp)
~ Abréviation ~
En plus de cela, par exemple, la technologie de synthèse vocale de l'IA peut être combinée.
--AI Co., Ltd. "AITalk"
Vous ne savez peut-être pas ce que vous dites, mais en fait, avec Twilio, vous pouvez utiliser le navigateur que vous utilisez normalement comme téléphone. Oui, vous pouvez appeler avec un navigateur. Dans cette leçon, vous allez utiliser le navigateur comme un téléphone et essayer de passer un appel via le navigateur. L'envoi et la réception via un navigateur utilisent une fonction appelée Twilio Client, mais un mécanisme appelé jeton d'accès est requis pour l'envoi et la réception. Un jeton d'accès est une clé d'authentification qui vous permet d'utiliser les fonctions du téléphone à l'aide de Twilio, et peut être obtenu en demandant à Twilio d'émettre un jeton d'accès côté utilisateur. Il faut du temps pour créer ces mécanismes à partir de zéro, donc cette fois, nous utiliserons le démarrage rapide préparé à l'avance. Cette leçon utilisera ngrok comme auparavant.
Si vous pouvez utiliser Git, utilisez la commande suivante pour cloner le fichier source dans votre répertoire de travail.
$ git clone https://github.com/TwilioDevEd/client-quickstart-python.git
Si vous ne pouvez pas utiliser Git, téléchargez le fichier Zip à partir de l'URL suivante et extrayez-le dans votre répertoire de travail. https://github.com/TwilioDevEd/client-quickstart-python/archive/master.zip
Accédez au répertoire cloné (extrait).
$ cd client-quickstart-python
Créez un fichier .env en copiant l'exemple de fichier .env.
$ cp .env.example .env
Pour les utilisateurs Windows
$ cp .env.example.ps1 .env.ps1
Ouvrez .env ou .env.ps1 avec un éditeur et définissez les variables d'environnement.
.env
export TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export TWILIO_AUTH_TOKEN=your_auth_token
export TWILIO_TWIML_APP_SID=APXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export TWILIO_CALLER_ID=+1XXXYYYZZZZ
Pour TWILIO_ACCOUNT_SID et TWILIO_AUTH_TOKEN, saisissez le AccountSit et AuthToken utilisés dans la leçon précédente. TWILIO_TWIML_APP_SID n'est pas connu à ce stade, alors laissez-le seul. Dans TWILIO_CALLER_ID, écrivez le numéro 050 acheté au format E.164. Une fois les paramètres définis, enregistrez-le par écrasement.
Définissez les variables d'environnement avec la commande suivante.
$ source .env
Pour les utilisateurs Windows, utilisez la commande suivante pour définir.
. .\.env.ps1
Utilisez la commande suivante pour charger la bibliothèque requise.
$ pip install -r requirements.txt
Les bibliothèques utilisées cette fois sont Flask, twilio et fake-factory.
$ ngrok http 5000
Lorsque ngrok démarre, enregistrez l'URL affichée (https) dans le Bloc-notes.
Sélectionnez les applications TwiML que vous avez créées à nouveau et notez le SID de l'application.
Publiez le SID d'application écrit dans TWILIO_TWIML_APP_SID dans le fichier .env que vous avez modifié précédemment.
Fermez une fois l'application en cours d'exécution (app.py) (Ctrl-C).
Rechargez les variables d'environnement.
$ source .env
$ python app.py
Si Twilio Device Ready! S'affiche comme indiqué à l'écran, vous pouvez passer un appel. Lors d'un appel, spécifiez le numéro de téléphone au format E.164.
Ouvrez app.py dans un éditeur et vérifiez-le. Il contient deux gros codes, l'un pour obtenir le jeton d'accès / jeton et l'autre pour passer un appel / une voix. Dans / token, un objet ClientCapbilityToken est créé et deux paramètres sont définis: allow_client_outgoing (application_sid) et allow_client_incoming (identity). Le premier est le paramètre pour les jetons sortants et le second est le paramètre pour les appels entrants. Le SID TwiML Apps est spécifié pour le jeton sortant, ce qui permet à Twilio d'appeler / vocaliser lorsque l'instruction sortante est reçue du navigateur. En outre, le jeton pour les appels entrants définit sa propre identité, ce qui permet aux autres clients de spécifier l'identité comme destination pour recevoir un appel. / voice est une URL appelée par Twilio lors d'un appel, et le numéro de destination est passé en tant que paramètre To. En renvoyant ceci comme un verbe Dial, Twilio vous appellera. Cette fois, l'appel entrant avec le numéro 050 n'est pas implémenté, mais si vous souhaitez l'implémenter, utilisez la console de gestion de Twilio, spécifiez le traitement entrant du numéro 050 et utilisez TwiML pour le verbe Dial adressé à l'identité. Ce n'est pas grave si vous le retournez. Le code sur le côté frontal se trouve dans quickstart.js dans le dossier statique. Lorsque la page se charge, vous pouvez voir que vous utilisez ajax pour obtenir le jeton d'accès. Si le jeton est acquis avec succès, l'appareil sera initialisé à l'aide du jeton acquis. Lorsque l'initialisation est terminée, l'événement Device.ready sera déclenché. En plus d'être prêt, l'appareil a des événements importants. Ces événements sont décrits dans les documents suivants: https://jp.twilio.com/docs/api/client/device
Dans cette leçon, vous combinerez la technologie de reconnaissance vocale de Twilio et la technologie de transmission SMS pour créer un programme qui enregistre la voix et la convertit en caractères lorsqu'il arrive à un numéro 050 et le renvoie à l'appelant par SMS. Vous ne pouvez pas utiliser le numéro 050 pour envoyer des SMS, alors achetez un nouveau numéro américain. ** Vous devez mettre à jour votre compte d'essai Twilio. ** **
# 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 appelé lorsqu'un appel arrive
response = VoiceResponse()
gather = Gather(input='speech', language='ja-JP', action='/sendsms', method='POST')
gather.say('Merci de votre appel. Veuillez me donner un message.', language='ja-JP', voice='alice')
response.append(gather)
return str(response)
@app.route('/sendsms', methods=['POST'])
def sendsms():
#Obtenez des résultats de reconnaissance vocale
result = request.form["SpeechResult"] or ''
to = request.form["From"] or ''
if (result != '' and to != ''):
#Envoyer un SMS
message = client.messages.create(to=to,
from_="+1XXXXXXXXXXXX",
body=result)
print(message.sid)
resp = VoiceResponse()
resp.say("Je t'ai envoyé un message. Merci beaucoup.", language="ja-JP", voice="alice")
return str(resp)
else:
resp = VoiceResponse()
resp.say("Je suis désolé. La reconnaissance vocale n'était pas possible.", language="ja-JP", voice="alice")
return str(resp)
if __name__ == "__main__":
app.run(port=5000, debug=True)
$ python app.py
$ ngrok http 5000
Lorsque ngrok démarre, enregistrez l'URL commençant par https.
Le verbe Gather généré par appel est à l'origine un verbe pour traiter les signaux DTMF (signaux de tonalité de poussée), mais il est également possible d'acquérir des données vocales en plus du DTMF. Les données vocales sont transmises en interne au moteur de reconnaissance vocale et le résultat est envoyé au webhook spécifié par le paramètre d'action. L'audio peut être enregistré jusqu'à 60 secondes, et des frais supplémentaires de 3 yens seront facturés pour chaque conversion (unité de 15 secondes) en plus des frais d'appel. Cette fois, le SMS a été envoyé tel quel après la reconnaissance vocale, mais il est également possible de créer un BOT en utilisant la voix en utilisant, par exemple, l'API de conversation d'IBM Watson.
Dans cette leçon, vous utiliserez la fonction FAX programmable pour envoyer et recevoir des télécopies. D'un point de vue mondial, le Japon est toujours un pays où les télécopies sont encore très utilisées, et il existe de nombreuses façons de les utiliser, telles que l'envoi de télécopies à partir de programmes et le traitement automatique des télécopies reçues. Vous pouvez utiliser le numéro 050 pour envoyer et recevoir des télécopies, mais vous ne pouvez pas recevoir d'appels vocaux ou de télécopies avec le même numéro 050. Cette fois, je vais changer le numéro 050 déjà acheté pour FAX et l'utiliser.
$ git clone https://github.com/twilioforkwc/simpleFAX.git
$ cd simpleFAX
$ mv example.env .env
$ source .env
$ python app.py
$ ngrok http 3000
Notez l'URL https que vous avez commencée.
Exemple: https://xxxxxx.ngrok.io/sendfax?to=03XXXXXXXX&pdf=xxxxxx.pdf
Le fichier app.py est volumineux et contient deux codes, un pour l'envoi (sendfax) et un pour la réception (receive, actionReceiver).
Sendfax pour l'envoi contient le code pour envoyer un fax à l'aide de l'API Rest. Pour le moment, la bibliothèque d'assistance pour Python ne prend pas en charge FAX, elle est donc réalisée en utilisant la bibliothèque de requêtes.
Pour déterminer si la transmission a réussi, il est nécessaire de spécifier statusCallback dans RestAPI au moment de la transmission, ou d'appeler le RestAPI en utilisant le FAX SID inclus dans la valeur de retour du RestAPI au moment de la transmission, mais ce processus est omis dans ce programme. Faire.
La réception pour réception sera le premier webhook à être appelé lorsqu'un fax arrive au numéro Twilio. Ici, vous devez renvoyer soit le verbe
Vous trouverez ci-dessous plus de documentation sur le FAX programmable. https://jp.twilio.com/docs/api/fax
Cette fois, nous avons présenté le cas de l'utilisation de Python, mais en plus de Python, nous avons également des SDK pour des langages tels que Node.js, C #, Java, Ruby, PHP et Salesforce. Pour plus de détails, veuillez consulter ici.
https://twilio.kddi-web.com Twilio est un service d'API cloud qui vous permet d'intégrer facilement diverses méthodes de communication telles que les appels vocaux, la messagerie (SMS / chat) et la vidéo dans vos applications et entreprises. Il s'agit d'un système de paiement à l'utilisation qui ne nécessite pas de coût initial et est compatible avec divers langages de développement, il est donc également utilisé pour de nombreux événements et startups de hackathon.
Recommended Posts