[PYTHON] Compréhension du mécanisme Twilio # 1 - Introduction

introduction

Twilio est utilisé à divers endroits comme un service de téléphonie simple et polyvalent, et je pense que des frères et sœurs l'utilisent également dans divers projets.

La documentation officielle contient de nombreux exemples de code pour chaque langue, mais jusqu'à ce que je m'en lasse, l'accent était mis sur la manière d'appeler depuis chaque langue, et il n'y avait aucune information sur les protocoles de communication et les structures de données.

En particulier, je n'ai pas trouvé d'informations détaillées sur la façon d'appeler un client Twilio à partir d'un téléphone externe ou d'implémenter un serveur qui renvoie TwiML. \ # Il y avait des informations fragmentaires, mais j'ai eu du mal à les combiner à un niveau pratique ...

Par conséquent, je voudrais résumer les informations nécessaires tout en étant conscient du point de vue du fonctionnement de Twilio et en comparant les résultats de la vérification réelle et les résultats de la capture de paquets.

Veuillez noter que les informations non incluses dans la documentation officielle ont été vérifiées pour le moment jusqu'à ce que nous nous en lassions, et peuvent changer à l'avenir.

Composition de ce thème

En raison du volume important de ce thème, nous le diviserons en quatre sections. Cet article correspond à "1. Introduction".

―― 1. ** Introduction ← Maintenant ici ** ―― 1. ** Structure de base et définition des termes lors de l'utilisation de Twilio ** ―― 2. ** Environnement vérifié cette fois ** ―― 2. Structure des données de flux de communication ―― 1. Transfert de jeton d'authentification / capacité ―― 2. Appel (appel entrant) depuis un téléphone externe vers un client Twilio ―― 3. Appel du client Twilio vers un téléphone externe (OutgoingCall) --3-1. Procédure pas à pas d'implémentation d'AWS API Gateway + Lambda (Partie 1) ―― 1. Implémentation du traitement API Server (Python sur AWS Lambda) --2 paramètres de la passerelle API --3-2. Procédure pas à pas d'implémentation AWS API Gateway + Lambda (partie 2) ―― 3. Implémentation et déploiement de Twilio Client ―― 4. Contrôle de fonctionnement!

Lecteur supposé

Cet article et les articles associés sont destinés aux lecteurs suivants:

Définition de la structure de base et des termes lors de l'utilisation de Twilio

C'est le sujet principal. Tout d'abord, vérifiez la configuration de base et le flux de communication envisagés par Twilio.

La figure ci-dessous est tirée de la documentation officielle, mais la figure dans "Architecture" est très importante et doit être gardée à l'esprit. Il s'agit d'une configuration pour passer / recevoir des appels depuis un appareil Android utilisant Twilio, mais il s'agit généralement de la configuration.

twilio-android-diagram.original.png Twilio Client Android SDK - Architecture https://www.twilio.com/docs/api/client/android

Les personnages principaux sont les trois suivants. Il semble qu'il n'y ait pas de nom officiel pour chacun, mais dans cet article, nous les unifierons avec les trois noms suivants.

Lorsque vous expliquez le sens de l'appel, concentrez-vous autant que possible sur le client Twilio. En d'autres termes, cela se traduit par un appel depuis Twilio Client / la réception d'un appel depuis Twilio Client. \ # À propos, certaines des fonctions qui peuvent être utilisées avec le SDK et l'API de Twilio sont données entrantes et sortantes, etc., mais toutes sont également centrées sur le client Twilio.

Les autres termes utilisés dans cet article et une série d'articles connexes sont définis comme suit.

No le terme Contenu
1 Numéro de téléphone Twilio Appelez le numéro de téléphone que vous avez acheté auprès de Twilio et associé au client Twilio. Toujours E.Il est exprimé au format 164.
2 E.Format 164 「+Le format commence par ", suivi du code du pays et du numéro de téléphone. Vous pouvez insérer des traits d'union et des blancs au milieu. e.g. +81-3-1234-5678
3 TwiML * Veuillez vous référer au document officiel(https://www.twilio.com/docs/api/twiml)
4 Client Name Nom unique associé au client Twilio. Requis pour recevoir des appels avec Twilio Client.
5 Incoming Call Appeler le client Twilio depuis un téléphone externe. Parfois écrit comme un appel entrant.
6 Outgoing Call Passer un appel externe depuis le client Twilio. Parfois écrit comme un appel sortant.

Environnement vérifié cette fois

Le client Twilio à réaliser cette fois visait à pouvoir faire la même chose qu'un téléphone normal. Les spécifications spécifiques sont les suivantes.

--Ce que tu peux faire --Depuis Twilio Client, vous pouvez passer un appel téléphonique général en spécifiant n'importe quel numéro (appel sortant)

L'architecture a la configuration suivante.

TwilioDiagrams_Fig1-1.png

Le serveur API que nous préparons nous-mêmes utilise AWS. Je l'ai implémenté en Python à l'aide d'API Gateway et de Lambda. La région est Tokyo (ap-nord-est-1). Le client Twilio a été modifié en fonction du didacticiel JavaScript de Twilio. Placez-le sur S3 et accédez-y à partir d'un navigateur Web.

Twilio Client Javascript Quickstart https://www.twilio.com/docs/quickstart/client/javascript

\ # Cependant, la base est vers août 2015. \ # Au 12 octobre 2016, je n'ai pas trouvé le tutoriel auquel je faisais référence à l'époque dans le document officiel ...

L'API fournie par API Server est définie comme suit.

Endpoint La description Noms dans une série d'articles
/twilio/retrieve_capability_token Renvoyez le jeton de capacité au client Twilio. API d'acquisition de jetons de capacité
/twilio/retrieve_twiml/call_incoming Renvoie le TwiML utilisé pour appeler le client Twilio. API de retour TwiML pour les appels entrants
/twilio/retrieve_twiml/call_outgoing Nous vous retournerons le TwiML utilisé lors d'un appel depuis le client Twilio. API de retour TwiML pour les appels sortants

Déploiement vers la phase de production d'API Gateway. Donc, l'URL complète ressemble à ceci: La configuration de l'URL sera expliquée lors de sa mise en œuvre dans API Gateway, elle sera donc omise ici.

https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/twilio/retrieve_capability_token https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/twilio/retrieve_twiml/call_incoming https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/twilio/retrieve_twiml/call_outgoing

Ouverture et préparation d'un compte Twilio

Enregistrez votre compte sur le site Twilio au Japon. Veuillez faire attention à ne pas vous inscrire depuis le site américain. http://twilio.kddi-web.com/

Obtenir / définir le numéro de téléphone Twilio

Obtenez le numéro de téléphone et effectuez les réglages nécessaires. Après vous être connecté à la console Twilio, obtenez un nouveau numéro dans «Numéro de téléphone» dans le menu de gauche. Vous pouvez également en obtenir un avec votre compte d'essai. Cependant, une «vérification» est nécessaire pour passer un appel vers le téléphone réel. Enregistrez le numéro de téléphone pour tester l'appel de "Numéro de téléphone" -> "Numéro de téléphone vérifié".

Après avoir obtenu le numéro de téléphone, définissez l'URL de "UN APPEL ARRIVE". Définissez ici l'URL de l'API de retour TwiML pour l'appel entrant. (L'URL réelle sera construite avec 3. Procédure pas à pas pour l'implémentation d'AWS API Gateway + Lambda.) Veuillez vous référer à la figure ci-dessous. Ceci est utilisé lors de l'appel de ce numéro de téléphone Twilio à partir d'un vrai téléphone. 2016-10-16_03h52_20.png

Créer et configurer l'application TwiML

Créez une application TwiML et configurez les paramètres requis. Après vous être connecté à la console Twilio, allez dans "Programmable Voice" -> "Tools" -> "TwiML Apps" dans le menu de gauche. De là, vous pouvez créer une nouvelle application TwiML.

Définissez la "DEMANDE URL" de "Appel vocal". Définissez ici l'URL de l'API de retour TwiML pour les appels sortants. (L'URL réelle sera construite avec 3. Procédure pas à pas pour l'implémentation d'AWS API Gateway + Lambda.) Veuillez vous référer à la figure ci-dessous. 2016-10-16_05h14_56.png

Ouverture et mise en œuvre d'un compte AWS

Ouvrez un compte AWS. L'implémentation spécifique sera expliquée dans 3. Procédure pas à pas pour l'implémentation d'AWS API Gateway + Lambda, donc je l'omettrai ici.

Résumé

Jusqu'à présent, nous avons expliqué les grandes lignes de ce thème et les éléments à préparer. La suite sera l'article suivant.

Twilio # 2-Comprendre le mécanisme

Recommended Posts

Compréhension du mécanisme Twilio # 1 - Introduction
Compréhension du mécanisme Twilio # 2-Structure des données de flux de communication
Fonctionnement de l'importation de modules Python
[Pepper] Comment l'utiliser?
Comprendre le fonctionnement de l'API Zabbix
[Introduction] Comment utiliser open3d
Comprendre comment fonctionne le différé de Go