Microsoft Translator APIの使い方であるが次の手順でAPIを呼び出すことで翻訳ができる。
- access_tokenを取得する
- 翻訳する
API呼び出しにはMicrosoft Translator APIの登録が必要になるがその方法については前のblogを参照してください。
また、これらAPI実行するにはHTTP POSTやリクエストヘッダへの値の設定が必要になる。 普通にブラウザからURLを叩くだけでは実行できないので何かプログラムを作成するか、開発者向けのブラウザ拡張ツールを使うといいだろう。Chromeの場合Postmanというアプリを使っているが結構使いやすい。
- リクエストURL
https://datamarket.accesscontrol.windows.net/v2/OAuth2-13
- メソッド
- POST
- grant_type
client_credentials
- client_id
- アプリケーションの登録時に指定したクライアント ID
- client_secret
- アプリケーションの登録時に取得した顧客の秘密
- scope
http://api.microsofttranslator.com
POSTするときはcontent-type=application/x-www-form-urlencoded で送ること。 multipart/form-dataで送るとは受信できないというエラーになる。
応答として以下のようなJSONが返ってくる。
{ "token_type": "http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0", "access_token": "http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=....", "expires_in": "600", "scope": "http://api.microsofttranslator.com" }このJSONに
access_token
が含まれているのでその部分の文字列をコピーする。
access_tokenには有効期間があって取得時から10分のようである。
- リクエストURL
http://api.microsofttranslator.com/V2/Http.svc/Translate
- メソッド
- とりあえずHTTP GETで試してみた。POSTでもよい?
access_tokenはリクエストのヘッダに設定する必要がある。
ヘッダ名Authorization
に値として Bearer (空白) (先に取得したaccess_token)
を設定する。
なぜ、Bearer
という文字列をaccess_tokenの前につけるか謎だが必須になっている。
access_tokenは有効期限内ならば何度でも使えるようである。
有効期限が切れたaccess_tokenを使うと400 bad requestのエラーになった。
リクエストのパラメータには以下を指定する。
- from
- 翻訳元言語のコード
- to
- 翻訳先言語のコード
- text
- 翻訳するテキスト
翻訳元言語と翻訳先言語にはこのページの一覧のものが使えるようである。
ためしに「こんばんわ」をスペイン語に翻訳する。Authorization
ヘッダを設定してリクエストを投げる。
結果が得られた。
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">¡Buenas noches!</string>
スペイン語はよくわからないがたぶん合っているんだろう…
関連記事