[PYTHON] J'ai fait une étude préliminaire de l'API pour recevoir les webhooks d'entrée / sortie de réunion Zoom dans Lambda (1)

J'essaie de créer un service qui utilise l'API de Zoom lors du hackathon de l'entreprise, alors j'ai fait une enquête préliminaire.

Authentification de l'API Zoom

Les jetons JWT ou OAuth 2.0 sont disponibles en tant que jetons possibles. Le token JWT prêt à l'emploi utilisé était celui affiché à l'écran.

L'utilisateur zoom enregistré dans le domaine co.jp de l'entreprise est sous le compte de l'entreprise et n'a pas pu obtenir le jeton JWT sur place (je n'avais pas l'autorisation de créer l'application), j'ai donc utilisé un Gmail personnel distinct. Vous avez créé un utilisateur, créé une application et obtenu un jeton JWT.

Préparez l'URL du webhook

J'ai choisi ** Chalice **, qui est un framework qui vous permet de créer facilement des API Gateway + Lambda API. C'est très simple car vous pouvez écrire une fonction et déployer diverses choses avec une seule commande de déploiement sans être conscient des paramètres chronophages liés aux autorisations et aux paramètres de la passerelle API.

Chalice https://github.com/aws/chalice

Une fois déployée, l'URL de l'API REST sera affichée, donc enregistrez-la dans ʻEvent notification endpoint URLà partir de l'écran de gestion de l'application de zoom. Comme il s'agit de l'URL de l'API REST + le nom de la fonction à enregistrer, cela ressemble à ceci.https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/api/webhook`

Étant donné que le zoom comporte un grand nombre d'événements de webhook, cochez les événements que vous souhaitez recevoir.

Vérification de l'API avec Postman

L'URL du webhook est-elle active? Je vais le vérifier rapidement. La méthode GET a renvoyé une réponse immédiatement, mais le webhook est accessible par la méthode POST. Il est nécessaire de spécifier de recevoir la méthode POST côté Calice.

app.py


@app.route('/webhook', methods=['POST'])
def webhook():
    print('received event:')
    request = app.current_request
    app.log.debug(json.dumps(request.to_dict()));
    app.log.debug(json.dumps(request.json_body))
#Déployer
chalice deploy --profile xxxxx

#Attendez le journal
chalice logs -f --profile xxxxx

En attendant le journal comme celui-ci, faisons une demande avec Postman. En environ 2-3 secondes, le journal est arrivé au terminal.

À ce stade, j'ai également constaté que si je démarre / termine une réunion de zoom, je peux recevoir le webhook réel et générer le journal. Comme avec le facteur, le journal coulera dans environ 2-3 secondes, donc je pense qu'il est notifié avec presque aucun retard.

La prochaine fois, j'essaierai d'exécuter l'API Zoom en fonction des informations reçues.

Recommended Posts

J'ai fait une étude préliminaire de l'API pour recevoir les webhooks d'entrée / sortie de réunion Zoom dans Lambda (1)
J'ai fait un peu de recherche sur la classe
J'ai créé une application avec Lambda qui notifie LINE de "j'aime" à l'aide de l'API Qiita.
J'ai fait un bot mou qui m'informe de la température
J'ai fait beaucoup de recherches sur la façon dont Python est exécuté
Une histoire qui visualise le présent de Qiita avec Qiita API + Elasticsearch + Kibana
zoom J'ai essayé de quantifier le degré d'excitation de l'histoire lors de la conférence
J'ai écrit un lecteur de corpus qui lit les résultats de l'analyse MeCab
J'ai essayé de mesurer le temps d'attente de la file d'attente d'exécution d'un processus sous Linux
Création d'un bot Slack qui confirme et notifie à AWS Lambda la date d'expiration d'un certificat SSL