この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Introduction
REST APIを使用してOTRSにアクセスするPython wrapper PyOTRS
を使ってみましたのでご紹介します。
System Requirements
- OTRS (Version 5)
- PyOTRS 0.1.29
- Python 3.6.1
Outline
PyOTRSでは以下操作が可能です。
* create a new Ticket
* get the data of a specific Ticket
* search for Tickets
* update existing Tickets
主なメソッド
* Client.session_create (Use credentials to "log in")
* Client.ticket_create
* Client.ticket_get_by_list (takes a list)
* Client.ticket_get_by_id (takes an int)
* Client.ticket_search
* Client.ticket_update
今回は以下メソッドを使用して担当者が未割り当てのチケット数
と自分が担当のチケットのタイトルとチケットリンク
を取得します。
- Client.session_create
- Client.ticket_get_by_id
- Client.ticket_search
Install
PyOTRSをインストール
$ pip install PyOTRS
sample code
from pyotrs import Client
from datetime import datetime, timedelta, timezone
# OTRS constant
URL = "https://your_otrs_domain"
USERNAME = "your_user_name"
PASSWORD = "your_password"
TICKET_LINK = URL + "/otrs/index.pl?Action=AgentTicketZoom;TicketID="
# Create session
client = Client(URL, USERNAME, PASSWORD)
client.session_create()
# Get my ticket (e.g. State:'new' or 'open'、Queue:'Raw'、OwnerIDs: 28)
ticket_ids = client.ticket_search(States=['new', 'open'], Queues=['Raw'], OwnerIDs=[28])
print("number of my tickets:" + str(len(ticket_ids)))
for ticket_id in ticket_ids:
get_ticket = client.ticket_get_by_id(ticket_id)
print(get_ticket.field_get("Title"))
print(TICKET_LINK + ticket_id)
# Setting timezone
jst_time = timezone(timedelta(hours=+9), 'JST')
day = datetime.now(jst_time) - timedelta(days=1)
# Get ticket (e.g. younger than 1 day State:'new'、Queue:'Raw'、OwnerIDs: 1)
ticket_ids = client.ticket_search(TicketCreateTimeNewerDate=day, States=['new'], Queues=['Raw'], OwnerIDs=[1])
print("number of new tickets(younger than 1 day):" + str(len(ticket_ids)))
セッションを作る
Client.session_create
を使用してセッションを作ります。
# Create session
client = Client(URL, USERNAME, PASSWORD)
client.session_create()
ステータスが'new' or 'open'で自分のチケットを取得する
Client.ticket_search
を使用して自分が担当のチケットを取得します。
# Get my ticket (e.g. State:'new' or 'open'、Queue:'Raw'、OwnerIDs: 28)
ticket_ids = client.ticket_search(States=['new', 'open'], Queues=['Raw'], OwnerIDs=[28])
print("number of my tickets:" + str(len(ticket_ids)))
Client.ticket_get_by_id
を使用してticketの情報を取得します。
for ticket_id in ticket_ids:
get_ticket = client.ticket_get_by_id(ticket_id)
print(get_ticket.field_get("Title"))
print(TICKET_LINK + ticket_id)
担当者が未割り当てのチケット数を確認する
ここでは、1日経過していないチケットで、ステータスが新規、担当者が未割り当てのチケット数を確認しています。
# Setting timezone
jst_time = timezone(timedelta(hours=+9), 'JST')
day = datetime.now(jst_time) - timedelta(days=1)
# Get ticket (e.g. younger than 1 day State:'new'、Queue:'Raw'、OwnerIDs: 1)
ticket_ids = client.ticket_search(TicketCreateTimeNewerDate=day, States=['new'], Queues=['Raw'], OwnerIDs=[1])
print("number of new tickets(younger than 1 day):" + str(len(ticket_ids)))
実行
$ python get-otrs-ticket-using-pyotrs.py
number of my tickets:2
ExampleTitle1
https://your_otrs_domain/otrs/index.pl?Action=AgentTicketZoom;TicketID=300**1
ExampleTitle2
https://your_otrs_domain/otrs/index.pl?Action=AgentTicketZoom;TicketID=300**2
number of new tickets(younger than 1 day):54
チケット情報を取得することができました。
まとめ
PyOTRSを使用してチケットを取得してみました。 取得した情報をChatWorkやSlackなどのコミュニケーションツールに通知することで、OTRSへログインしていない時でもチケットを確認することができるかと思います。
ではまた。