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>
スペイン語はよくわからないがたぶん合っているんだろう…
関連記事
かなり参考になりました。ありがとうございます。
返信削除こちらもまだまだ勉強中ですがお役にたててうれしいです。
返信削除