[Python] Verwendung der Typetalk-API

Einführung

Dieser Artikel zeigt Ihnen, wie Sie die Typetalk-API in Python verwenden. Übrigens habe ich einen Curry-Beurteilungsbot gemacht. 1599655883672.jpg

Vorbereitungen

Erstellen Sie einen Bot und erhalten Sie ein Token und eine URL.

Bot-Erstellung

Öffnen Sie die Registerkarte Bot in den Themeneinstellungen. Screenshot 2020-09-09 153331.jpg

Drücken Sie "Neu hinzufügen", um den Bildschirm mit den Bot-Einstellungen zu öffnen. Screenshot 2020-09-09 153945.jpg

Die Elemente sind wie folgt. Bitte jeweils einstellen.

Artikel Erläuterung
Bot ID Bots eindeutige ID
Bot Name Bot Benutzername
Erläuterung ボットのErläuterung
API-Bereich Bot Autorität
Outgoing Webhook Wird in diesem Artikel nicht verwendet

Drücken Sie nach dem Einstellen "Erstellen". Sie sollten das Token und die URL unten sehen. 1599635765682.jpg

Erhalten

Notieren Sie sich das Token und die URL, wenn Sie dazu aufgefordert werden.

Damit sind die Vorbereitungen abgeschlossen.

Umgebung

Python 3.8.5

Bibliotheksinstallation

Wir verwenden die HTTP-Kommunikationsbibliothek von Python namens Requests.

pip install requests

Quellcode

Geben Sie das Token und die URL ein, die Sie in "Token" und "URL" notiert haben.

Stichprobe

Die offiziellen Beispiele wurden geringfügig geändert.

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())

Beim Ausführen sollte der Bot "Hallo, Typetalk!" Zum Thema posten. Sie sollten auch eine Antwort sehen. Enthält detaillierte Informationen zu der von Ihnen geposteten Nachricht. Screenshot 2020-09-09 201544.jpg

Nachricht abrufen

Erhalten Sie die Nachricht. Verwenden Sie "pprint", um die Antwort besser lesbar zu machen.

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())
Antwortbeispiel

[Offizielles Beispiel](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) wurde angegeben.

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": "UX-Verbesserung",
        "name": "UX-Verbesserung",
        "description": "Dies ist ein Thema zur Verbesserung von UX.\n Sie können gerne über Design, UX und andere Dinge sprechen, die Ihnen auffallen.\n\n Zusammenfassendes Wiki zur Verbesserung der Website\n- https://xxxxx.backlog.jp/wiki/WEBSITE/Kaizen\n\n Wir werden auch verwandte Ereignisse zu diesem Thema veröffentlichen.",
        "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 Benutzer",
                "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": "Ich konnte den oberen Bildschirm verbessern. 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": "Weitere Zusammenarbeit mit dem Team|Nulab",
                    "description": "Millionen von Benutzern nutzen die Dienste von Nulab, um die Teamkommunikation zu verbessern. Machen Sie die Arbeit Ihres Teams mit den Online-Tools von Nulab für die Zusammenarbeit angenehmer.",
                    "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": "Mr. Masa, was halten Sie von der Farbe dieses Bildschirms?",
            "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"
        }
    ]
}

Von diesen sind die "Beiträge" zu beachten.

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": "Ich konnte den oberen Bildschirm verbessern. 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": "Weitere Zusammenarbeit mit dem Team|Nulab",
                    "description": "Millionen von Benutzern nutzen die Dienste von Nulab, um die Teamkommunikation zu verbessern. Machen Sie die Arbeit Ihres Teams mit den Online-Tools von Nulab für die Zusammenarbeit angenehmer.",
                    "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": "Mr. Masa, was halten Sie von der Farbe dieses Bildschirms?",
            "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"
        }
    ]

Sie können verschiedene Dinge wie Nachrichten-ID, angehängte Datei, Anzahl der Likes usw. erhalten.

Antworten

Die Nachrichten-ID wird verwendet, um auf die vom Bot selbst gepostete Nachricht zu antworten. Verwenden Sie json, um mit JSON-Strings zu arbeiten.

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':'Hallo!', 'replyTo': id}
q = requests.post(url, json = reply, headers = headers)
print(q.status_code)
pprint.pprint(q.json())

Wenn Sie laufen, ist der Bot Hallo! Sie sollten antworten. Screenshot 2020-09-09 211038.jpg

Kommentar
dic = json.loads(r.text)

Konvertiert eine JSON-Zeichenfolge in einen Wörterbuchtyp.

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

[Beispiel für eine offizielle Antwort](https://developer.nulab.com/de/docs/typetalk/api/1/post-message/#%E3%83%AC%E3%82%B9%E3%83% Aus 9D% E3% 83% B3% E3% 82% B9% E3% 81% AE% E4% BE% 8B) können wir erkennen, dass die Nachrichten-ID der Wert des "id" -Schlüssels unter dem "post" -Schlüssel ist.

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

Sie können verschiedene Dinge tun, indem Sie Parameter einstellen. Beim Posten von Nachrichten können Sie antworten, indem Sie "message ID" in "replyTo" schreiben.

Wie schön

Der Bot selbst mag die vom Bot geposteten Nachrichten.

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())

Wenn Sie es ausführen, sollte es dem Bot gefallen. Screenshot 2020-09-09 212838.jpg

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

Sie können verschiedene Dinge tun, indem Sie URL-Parameter festlegen. Add like

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

Es ist geworden.

abschließend

Das Obige ist die Einführung in die Verwendung. Sie können noch viele andere Dinge tun, z. B. Nachrichten löschen und angehängte Dateien herunterladen. Sie können die verschiedenen Parameter in der Schublade "Typetalk API" links neben der Typetalk API-Dokumentation (https://developer.nulab.com/de/docs/typetalk/) sehen. Mit der obigen Methode kann nur auf die Bereichs-APIs topic.post und topic.read zugegriffen werden.

Verweise

Recommended Posts

[Python] Verwendung der Typetalk-API
Verwendung der Python-API von OpenPose
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
Python: So verwenden Sie Async mit
[Python] Verwendung der Pandas-Serie
Verwendung von Anfragen (Python Library)
Verwendung von SQLite in Python
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Wie benutzt man Bing Search API?
Verwendung der Zip-Funktion von Python
[Python] Zusammenfassung der Verwendung von Pandas
So installieren und verwenden Sie pandas_datareader [Python]
[Python] Verwendung von __command__, Funktionserklärung
[Python] Verwendung von import sys sys.argv
[Python] Organisieren der Verwendung für Anweisungen
Memorandum über die Verwendung von Gremlin Python
[Python2.7] Zusammenfassung der Verwendung von unittest
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von __slots__ in der Python-Klasse
Verwendung von "deque" für Python-Daten
Verwendung von Python zip und Aufzählung
[Python] Verstehen, wie rekursive Funktionen verwendet werden
Zusammenfassung der Verwendung der Python-Liste
Verwendung der Cloud Vision API von GCP
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Verwendung ist und == in Python
[Frage] Wie verwende ich plot_surface von Python?
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Wie benutzt man Seaboan?
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
So installieren Sie Python
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Wie benutzt man numpy?