コールバック

翻訳のご注文を送信されるときには、ご注文中の各案件用に "callback_url" を設定できます。Gengoでは案件にアップデートがあるつど、あなたのシステムとGengoを同期化するための最も効率的な方法でアップデート内容をお知らせします。

コールバック通知は、以下のときに送られます:

  • 案件が、弊社翻訳者にとって受注可能になったとき

  • 案件が、弊社翻訳者によって翻訳が開始された時

  • 案件がレビュー可能になったとき

  • 案件が承認されたとき

  • 案件の承認が、弊社のGengoのお客様用インターフェースの依頼管理ボードからマニュアルで行われたとき

  • 案件に翻訳者からのコメントがあったとき

コールバックURLへのデータ提出が15分毎に1回、最大12時間試行されます。エンドポイントに到達できない場合は、 GET /translate/order/{id}/ エンドポイントを使って翻訳を受け取ることをお勧めします。

ファイル案件の場合、あなたのコールバックに送られるリクエストには "file_url_tgt" のパラメータが含まれおり、これは翻訳されたファイルへのリンクです。このリンクは Job(GET) でGETから取得されるファイル案件用URLとは異なっています (その場合は "src_file_link" になります)。

コールバックは60KB以上の内容を送ることができません。もし大容量のテキストを送りたい場合は、 Job(GET) を使用ください。こちらの問題の恒久的な対応につきましては現在対応中です。

コールバックURLは認証情報を含むことはできません。

パラメータフォーマット

コールバックのパラメータはJSON形式になっており、POSTの呼び出しで送信されます。案件関連の通知用には、案件のペイロードは “job” と名付けられたパラメータに含まれ、レスポンスであるかのようにPOSTされます。以下は、クライアントがGengoから受け取る案件関連のコールバック通知の一例です:

 1#!/usr/bin/python
 2# -*- coding: utf-8 -*-
 3
 4import cgi
 5import json
 6form = cgi.FieldStorage()
 7
 8print("Content-type: text/html\n")
 9
10if "job" in form:
11    json_data = form["job"].value
12else:
13    json_data = False
14
15if json_data:
16    print(json.loads(json_data, 'utf-8'))
17else:
18    print("fail")

コメント関連の通知は、翻訳者が案件にコメントした際に同じコールバック先に送付されます。ペイロードは、"comment" と名付けられたパラメータに含まれ、以下のように表示されます:

job_id : 文字列 コメントを適用する案件ID

body : 文字列 コメント本文。

ctime : 文字列 コメントの提出時刻を表すUnix タイムスタンプ

custom_data : 文字列 案件に関連付けられたカスタムデータ (存在する場合)

file_url_tgt : 文字列 ターゲットファイルのフルURL

案件にコメントがあったときにクライアントが受け取るコールバック通知の例をご紹介します:

 1#!/usr/bin/python
 2# -*- coding: utf-8 -*-
 3
 4import cgi
 5import json
 6form = cgi.FieldStorage()
 7
 8print("Content-type: text/html\n")
 9
10if "comment" in form:
11    json_data = form["comment"].value
12else:
13    json_data = False
14
15if json_data:
16    data = json.loads(json_data, 'utf-8')
17    comment = {}
18
19    # job id to which comment applies
20    comment["job_id"] = data["job_id"]
21
22    # actual comment text
23    comment["body"] = data["body"]
24
25    # comment creation time
26    comment["ctime"] = data["ctime"]
27
28    # custom data from job (if any)
29    custom_data = data["custom_data"] if "custom_data" in data else None
30
31    print(comment)
32    print(custom_data)
33else:
34    print("fail")