[Python] Comment utiliser l'API Typetalk

introduction

Cet article vous montrera comment utiliser l'API Typetalk en Python. Au fait, j'ai fait un bot de jugement curry. 1599655883672.jpg

Préparation préalable

Créez un bot et obtenez un jeton et une URL.

Création de bot

Ouvrez l'onglet Bot dans Paramètres du sujet. Capture d'écran 2020-09-09 153331.jpg

Appuyez sur «Ajouter nouveau» pour ouvrir l'écran des paramètres du bot. Screenshot 2020-09-09 153945.jpg

Les éléments sont les suivants. Veuillez définir chacun.

article La description
ID de bot ID unique du bot
Nom du robot Nom d'utilisateur du bot
La description ボットのLa description
Portée de l'API Autorité du bot
Outgoing Webhook Non utilisé dans cet article

Après le réglage, appuyez sur Créer. Vous devriez voir le jeton et l'URL en bas. 1599635765682.jpg

Avoir

Lorsque vous y êtes invité, notez le jeton et l'URL.

Ceci termine les préparatifs.

environnement

Python 3.8.5

Installation de la bibliothèque

Nous utilisons la bibliothèque de communication HTTP de Python appelée Requests.

pip install requests

Code source

Entrez le token et l'URL que vous avez notés dans token et ʻurl`.

échantillon

Les échantillons officiels ont été légèrement modifiés.

sample.py


import requests

token = ''
url = ''

data = {'message':'Hello, Typetalk!'}
headers = {'X-TYPETALK-TOKEN': token}
r = requests.post(url, json = data, headers = headers)
print(r.status_code)
print(r.json())

Lorsqu'il est exécuté, le bot doit publier «Hello, Typetalk!» Dans le sujet. Vous devriez également voir une réponse. Contient des informations détaillées sur le message que vous avez publié. Screenshot 2020-09-09 201544.jpg

Recevoir un message

Recevoir le message. Utilisez pprint pour rendre la réponse plus facile à lire.

get.py


import requests
import pprint

token = ''
url = ''

headers = {'X-TYPETALK-TOKEN': token}
r = requests.get(url, headers = headers)
print(r.status_code)
pprint.pprint(r.json())
Exemple de réponse

[Exemple officiel](https://developer.nulab.com/ja/docs/typetalk/api/1/get-messages/#%E3%83%AC%E3%82%B9%E3%83%9D% E3% 83% B3% E3% 82% B9% E3% 81% AE% E4% BE% 8B) a été cité.

example.json


{
    "bookmark": {
        "postId": 172371,
        "updatedAt": "2019-03-11T08:37:40Z"
    },
    "exceedsAttachmentLimit": false,
    "postContentsSettings": {
        "collapsedAccountIds": []
    },
    "myTopic": {
        "id": 15376,
        "topicId": 3557,
        "accountId": 2488,
        "kind": "grouped",
        "topicGroupId": 1703,
        "exTopicGroupId": 1702,
        "orderNo": 0,
        "createdAt": "2019-02-13T08:27:22Z",
        "updatedAt": "2019-02-13T08:27:22Z"
    },
    "topic": {
        "createdAt": "2016-02-05T06:13:44Z",
        "lastPostedAt": "2019-03-11T08:38:04Z",
        "isArchived": false,
        "suggestion": "Amélioration UX",
        "name": "Amélioration UX",
        "description": "C'est un sujet sur l'amélioration de l'UX.\n N'hésitez pas à parler de design, d'UX et d'autres choses que vous remarquez.\n\n Résumé Wiki sur l'amélioration du site\n- https://xxxxx.backlog.jp/wiki/WEBSITE/Kaizen\n\n Nous publierons également des événements liés à ce sujet.",
        "isDirectMessage": false,
        "id": 3557,
        "updatedAt": "2018-10-18T01:54:18Z"
    },
    "onboarding": null,
    "hasNext": false,
    "team": null,
    "mySpace": {
        "space": {
            "key": "XXXXXXX",
            "name": "Nulab Inc",
            "enabled": true,
            "imageUrl": "https://apps.nulab.com/spaces/XXXXXXX/photo/large"
        },
        "myRole": "ADMIN",
        "isPaymentAdmin": true,
        "invitableRoles": [
            "ADMIN",
            "USER",
            "GUEST"
        ],
        "myPlan": {
            "plan": {
                "key": "typetalk.standard25",
                "name": "Standard 25 utilisateurs",
                "limitNumberOfUsers": 25,
                "limitNumberOfAllowedAddresses": 25,
                "limitTotalAttachmentSize": 268435456000
            },
            "enabled": true,
            "trial": null,
            "numberOfUsers": 5,
            "numberOfAllowedAddresses": 0,
            "totalAttachmentSize": 14356,
            "createdAt": "2016-01-19T09:29:10Z",
            "updatedAt": "2019-08-28T08:19:49Z"
        }
    },
    "favorite": true,
    "posts": [
        {
            "attachments": [
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "1",
                        "fileName": "1.jpg ",
                        "fileSize": 472263
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/1/1.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/1/1.jpg "
                },
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "2",
                        "fileName": "2.jpg ",
                        "fileSize": 494376
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/2/2.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/2/2.jpg "
                },
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "3",
                        "fileName": "5.jpg ",
                        "fileSize": 218100
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/3/5.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/3/5.jpg "
                },
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "4",
                        "fileName": "6.jpg ",
                        "fileSize": 627926
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/4/6.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/4/6.jpg "
                }
            ],
            "quotedPosts": [],
            "message": "J'ai pu améliorer l'écran supérieur. http://nulab-inc.com/ja/",
            "mention": null,
            "createdAt": "2019-03-02T06:13:44Z",
            "topicId": 3557,
            "contents": null,
            "mentions": [],
            "talks": [],
            "replyTo": null,
            "links": [
                {
                    "id": 3148,
                    "url": "http://nulab-inc.com/ja/",
                    "contentType": "text/html; charset=UTF-8",
                    "title": "Poursuite de la collaboration avec l'équipe|Nulab",
                    "description": "Des millions d'utilisateurs utilisent les services de Nulab pour améliorer la communication d'équipe. Rendez le travail de votre équipe plus agréable avec les outils de collaboration en ligne de Nulab.",
                    "imageUrl": "https://nulab-inc.com/ogp_dft.png ",
                    "embed": null,
                    "createdAt": "2015-06-15T06:41:24Z",
                    "updatedAt": "2017-03-03T10:11:08Z"
                }
            ],
            "id": 154010,
            "account": {
                "id": 2492,
                "name": "hayashi",
                "fullName": "hayashi",
                "suggestion": "hayashi",
                "imageUrl": "https://typetalk.com/accounts/2492/profile_image.png?t=1453871047310",
                "isBot": false,
                "createdAt": "2016-01-26T08:19:01Z",
                "updatedAt": "2019-09-04T07:25:45Z"
            },
            "likes": [],
            "updatedAt": "2019-03-02T06:13:44Z"
        },
        {
            "attachments": [],
            "quotedPosts": [],
            "message": "Masa-san, que pensez-vous de la couleur de cet écran?",
            "mention": null,
            "createdAt": "2019-03-03T06:13:44Z",
            "topicId": 3557,
            "contents": null,
            "mentions": [],
            "talks": [],
            "replyTo": null,
            "links": [],
            "id": 154011,
            "account": {
                "id": 2489,
                "name": "yoshizawa",
                "fullName": "Yoshi",
                "suggestion": "Yoshi",
                "imageUrl": "https://typetalk.com/accounts/2489/profile_image.png?t=1564389095614",
                "isBot": false,
                "createdAt": "2016-01-26T08:18:12Z",
                "updatedAt": "2019-09-04T07:25:45Z"
            },
            "likes": [],
            "updatedAt": "2019-03-03T06:13:44Z"
        }
    ]
}

Parmi ceux-ci, celui auquel il faut prêter attention est les «posts».

posts.json


"posts": [
        {
            "attachments": [
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "1",
                        "fileName": "1.jpg ",
                        "fileSize": 472263
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/1/1.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/1/1.jpg "
                },
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "2",
                        "fileName": "2.jpg ",
                        "fileSize": 494376
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/2/2.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/2/2.jpg "
                },
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "3",
                        "fileName": "5.jpg ",
                        "fileSize": 218100
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/3/5.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/3/5.jpg "
                },
                {
                    "attachment": {
                        "contentType": "application/octet-stream",
                        "fileKey": "4",
                        "fileName": "6.jpg ",
                        "fileSize": 627926
                    },
                    "webUrl": "https://typetalk.com/topics/3557/posts/154010/attachments/4/6.jpg ",
                    "apiUrl": "https://typetalk.com/api/v1/topics/3557/posts/154010/attachments/4/6.jpg "
                }
            ],
            "quotedPosts": [],
            "message": "J'ai pu améliorer l'écran supérieur. http://nulab-inc.com/ja/",
            "mention": null,
            "createdAt": "2019-03-02T06:13:44Z",
            "topicId": 3557,
            "contents": null,
            "mentions": [],
            "talks": [],
            "replyTo": null,
            "links": [
                {
                    "id": 3148,
                    "url": "http://nulab-inc.com/ja/",
                    "contentType": "text/html; charset=UTF-8",
                    "title": "Poursuite de la collaboration avec l'équipe|Nulab",
                    "description": "Des millions d'utilisateurs utilisent les services de Nulab pour améliorer la communication d'équipe. Rendez le travail de votre équipe plus agréable avec les outils de collaboration en ligne de Nulab.",
                    "imageUrl": "https://nulab-inc.com/ogp_dft.png ",
                    "embed": null,
                    "createdAt": "2015-06-15T06:41:24Z",
                    "updatedAt": "2017-03-03T10:11:08Z"
                }
            ],
            "id": 154010,
            "account": {
                "id": 2492,
                "name": "hayashi",
                "fullName": "hayashi",
                "suggestion": "hayashi",
                "imageUrl": "https://typetalk.com/accounts/2492/profile_image.png?t=1453871047310",
                "isBot": false,
                "createdAt": "2016-01-26T08:19:01Z",
                "updatedAt": "2019-09-04T07:25:45Z"
            },
            "likes": [],
            "updatedAt": "2019-03-02T06:13:44Z"
        },
        {
            "attachments": [],
            "quotedPosts": [],
            "message": "Masa-san, que pensez-vous de la couleur de cet écran?",
            "mention": null,
            "createdAt": "2019-03-03T06:13:44Z",
            "topicId": 3557,
            "contents": null,
            "mentions": [],
            "talks": [],
            "replyTo": null,
            "links": [],
            "id": 154011,
            "account": {
                "id": 2489,
                "name": "yoshizawa",
                "fullName": "Yoshi",
                "suggestion": "Yoshi",
                "imageUrl": "https://typetalk.com/accounts/2489/profile_image.png?t=1564389095614",
                "isBot": false,
                "createdAt": "2016-01-26T08:18:12Z",
                "updatedAt": "2019-09-04T07:25:45Z"
            },
            "likes": [],
            "updatedAt": "2019-03-03T06:13:44Z"
        }
    ]

Vous pouvez obtenir diverses choses telles que l'identifiant du message, le fichier joint, le nombre de likes, etc.

réponse

L'ID de message est utilisé pour répondre au message publié par le bot lui-même. Utilisez json pour travailler avec des chaînes JSON.

reply_to_me.py


import requests
import pprint
import json

token = ''
url = ''

msg = {'message':'Hello, Typetalk!'}
headers = {'X-TYPETALK-TOKEN': token}
r = requests.post(url, json = msg, headers = headers)

dict = json.loads(r.text)
id = dict['post']['id']

reply = {'message':'salut!', 'replyTo': id}
q = requests.post(url, json = reply, headers = headers)
print(q.status_code)
pprint.pprint(q.json())

Lorsque vous exécutez, le bot est `Hello! Vous devriez répondre ». Screenshot 2020-09-09 211038.jpg

Commentaire
dic = json.loads(r.text)

Convertit une chaîne JSON en un type de dictionnaire.

id = dict['post']['id']

[Exemple de réponse officielle](https://developer.nulab.com/en/docs/typetalk/api/1/post-message/#%E3%83%AC%E3%82%B9%E3%83% À partir de 9D% E3% 83% B3% E3% 82% B9% E3% 81% AE% E4% BE% 8B), nous pouvons voir que l'ID du message est la valeur de la clé ʻid sous la clé post`.

reply = {'message':'salut!', 'replyTo': id}

Vous pouvez faire différentes choses en définissant des paramètres. Lors de la publication d'un message, vous pouvez répondre en écrivant «message ID» dans «replyTo».

Comme c'est gentil

Le bot lui-même aime les messages publiés par le bot.

like.py


import requests
import pprint
import json

token = ''
url = ''

msg = {'message':'Hello, Typetalk!'}
headers = {'X-TYPETALK-TOKEN': token}
r = requests.post(url, json = msg, headers = headers)

dic = json.loads(r.text)
id = dic['post']['id']

like = url + '/posts/' + str(id) + '/like'
q = requests.post(like, headers = headers)
print(q.status_code)
pprint.pprint(q.json())

Lorsque vous l'exécutez, votre bot devrait l'aimer. Screenshot 2020-09-09 212838.jpg

Commentaire
like = url + '/posts/' + str(id) + '/like'

Vous pouvez faire différentes choses en définissant des paramètres d'URL. Ajouter comme

https://typetalk.com/api/v1/topics/:topicId/posts/:postId/like

Il est devenu.

en conclusion

Ce qui précède est l'introduction de la façon d'utiliser. Vous pouvez effectuer de nombreuses autres actions, telles que la suppression de messages et le téléchargement de fichiers joints. Vous pouvez voir les différents paramètres dans le tiroir API Typetalk à gauche de la documentation de l'API Typetalk (https://developer.nulab.com/en/docs/typetalk/). Avec la méthode ci-dessus, seules les API de portée topic.post et topic.read sont accessibles.

Les références

Recommended Posts

[Python] Comment utiliser l'API Typetalk
Comment utiliser l'API Python d'OpenPose
python3: Comment utiliser la bouteille (2)
[Python] Comment utiliser la liste 1
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
[BigQuery] Comment utiliser l'API de BigQuery pour Python -Création de table-
Python: comment utiliser async avec
[Python] Comment utiliser la série Pandas
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser SQLite en Python
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser PubChem avec Python
Comment utiliser l'API Bing Search
Comment utiliser la fonction zip de python
[Python] Résumé de l'utilisation des pandas
Comment installer et utiliser pandas_datareader [Python]
[python] Comment utiliser __command__, explication des fonctions
[Python] Comment utiliser import sys sys.argv
[Python] Organisation de l'utilisation des instructions
Mémorandum sur l'utilisation du python gremlin
[Python2.7] Résumé de l'utilisation d'unittest
python: Comment utiliser les locals () et globals ()
Comment utiliser __slots__ dans la classe Python
Comment utiliser "deque" pour les données Python
Comment utiliser le zip Python et énumérer
[Python] Comprendre comment utiliser les fonctions récursives
Résumé de l'utilisation de la liste Python
Comment utiliser l'API Cloud Vision de GCP
[Python2.7] Résumé de l'utilisation du sous-processus
Comment utiliser is et == en Python
[Question] Comment utiliser plot_surface de python
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment installer python
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser numpy