
Zenpyを使いはじめました | python, Zendesk
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ベルリンは涼しいです。はんせです。
はじめに
これまでZendeskをpythonでいじるときはCore APIをrequestsでそのままエンドポイントを叩いていました。が、Zenpyなるものによって、よりシンプルにコードが書けることを今更知りました。
内容
Zenpyのインストールと基本APIの実行方法についてご紹介します。
- Zenpyのインストール
- credentialとオブジェクト作成
- チケット検索をする
- チケットの各種情報(キー)を取り出してみる
- ユーザー情報も取り出してみる
- チケットを更新する
インストール
pip install zenpy
Zenpyはpython2、python3両方をサポートしてます。
クレデンシャルとオブジェクト作成
クレデンシャルを用意します
cred = {
"token": "zendesknotoken",
"email": "hanse.kohei@classmethod.jp",
"subdomain": "zendesknosubdomain"
}tokenにはZendesk APIキーを記載しますemailにはZendesk APIキーを発行したZendeskユーザーのemailアドレスを記載しますsubdomainにはZendeskのサブドメインを記載します(xxx.zendesk.comのxxxの部分)
zenpy_clientオブジェクトを作成します
% python
Python 3.6.2 (default, Jan 9 2018, 15:22:48)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from zenpy import Zenpy
>>> creds = {
... "token": "zendesknotoken",
... "email": "hanse.kohei@classmethod.jp",
... "subdomain": "zendesknosubdomain"
... }
>>> zenpy_client = Zenpy(**creds)
>>>
できました
チケット検索をする
Search APIをZenpyで試します。サーチクエリの詳細はココにあります。
datetimeを使って、1週間前までに作成されたものを検索してみます。
forで回してprintをするなどで、検索結果をチェックします。
sandbox環境で実行してみます。
>>> zenpy_client = Zenpy(**creds)
>>> two_weeks_ago = datetime.datetime.now() - datetime.timedelta(days=14)
>>> import datetime
>>> two_weeks_ago = datetime.datetime.now() - datetime.timedelta(days=14)
>>> today = datetime.datetime.now()
>>> for ticket in zenpy_client.search("test", created_between=[two_weeks_ago, today], type='ticket'):
... print(ticket)
...
Ticket(id=947)
Ticket(id=949)Zendeskチケット #947と#949が検索に引っかかりました。
蛇足ですが、これは以下のAPIリクエストと同じ結果です。
% curl 'https://zendesknosubdomain.zendesk.com/api/v2/search.json' -G --data-urlencode 'query=test created<2018-08-12 created>2018-07-30 type:ticket' -u 'hanse.kohei@classmethod.jp/token:zendesknotoken'| jq -r ".results[] | .id"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6533 100 6533 0 0 7055 0 --:--:-- --:--:-- --:--:-- 7055
947
949
チケットの各種情報(キー)を取り出してみる
SandboxのZendeskチケットID#947に対してチケット情報を取得してみます。
>>> zenpy_client = Zenpy(**creds) >>> ticket = zenpy_client.tickets(id=947)
これで入りました。順にチケットID, チケットurl, チケット作成時刻を取得してみます。
>>> ticket.id 947 >>> ticket.url 'https://zendesknosubdomain.zendesk.com/api/v2/tickets/947.json' >>> ticket.created_at '2018-08-05T13:11:31Z'
取得できるチケットのキーはこちらをご参考。
これまた蛇足ですが、前項のSearchの出力結果と組み合わせてみます
>>> for ticket in zenpy_client.search("test", created_between=[two_weeks_ago, today], type='ticket'):
... print(ticket.url)
https://zendesknosubdomain.zendesk.com/api/v2/tickets/947.json
https://zendesknosubdomain.zendesk.com/api/v2/tickets/949.jsonシンプルです。
ユーザー情報も取り出してみる
同じ要領でユーザーも取り出してみます
>>> zenpy_client.users(id=25252472687) User(id=25252472687) >>> user = zenpy_client.users(id=25252472687) >>> user.id 25252472687 >>> user.name 'hanse-berlin' >>> user.email 'koheihansetest@gmail.com'
簡単ですね。
チケットを更新する
最後にチケット更新を試します。社内メモを付与してみます。
Zenpyの既定ライブラリからapi用のオブジェクトジェネレーター(?)クラスをインポートする必要があります。
このような形です。
>>> from zenpy.lib.api_objects import Comment >>> body = 'test hanse ahaha' >>> comment = Comment(body=body, public=False) >>> print(comment.body) test hanse ahaha
commentオブジェクトのbodyに「test hanse ahaha」が入りました。
今はチケットに社内メモを追加する(プライベートコメントの追加をする)のみですので、Commentを使用しますが、ユーザーやグループ情報の更新などには、ほかのクラスを使用します。詳細はこちら
Zendeskチケット#947に社内メモ追加のアップデートを実行してみます。
>>> from zenpy.lib.api_objects import Comment >>> ticket = zenpy_client.tickets(id=947) >>> body = 'test hanse ahaha' >>> ticket.comment = Comment(body=body, public=False) >>> zenpy_client.tickets.update(ticket) TicketAudit()
実際にはチケットオブジェクトのキーticket.commentにbodyを追加し(社内メモなのでpublicをFalseとします)、アップデートを実行するという流れになります。

社内メモが追加されました。
以上です
zenpyの基本的な操作をご紹介しました。
ではまた〜。






