デフォルトリッチメニューとは
LINE WORKS の Bot には、リッチメニュー と呼ばれる、画像上の任意の領域にアクションを設定可能な、自由度の高いメニューを割り当てることができます。
リッチメニューは、ユーザー単位で割り当てるか、Bot の既定値であるデフォルトリッチメニューとして割り当てます。
デフォルトリッチメニューは、これまで、Bot の属性として Bot の更新 API または Bot の部分更新 API で設定する必要がありましたが、これらの API の呼び出しには bot
Scope が必要で、デフォルトリッチメニューを設定する目的からはちょっと強い権限を要求していました。
デフォルトリッチメニュー API
そこで、bot
scope よりも一段低い権限である bot.message
scope で利用できる、デフォルトリッチメニューの管理 API がリリースされました。
また、デフォルトリッチメニューの利用に必要な以下の API も、bot.message
scope で利用できます。
これにより、bot が作成されていれば、bot.message
scope を使ってデフォルトリッチメニューを設定・管理することができるようになりました。
デフォルトリッチメニューの使い方
では、早速、新しいデフォルトリッチメニュー API を使って、Bot にデフォルトリッチメニューを設定してみましょう。
Bot は既に作成済みと想定します。
0. Access Token の取得
bot.message
を Scope に指定して、Access token を取得します。
Access Token の取得方法がわからない場合には、LINE WORKS API 2.0 を PowerShell で叩いてみる (JWT をもう一度) を参考にしてみてください。
取得した Access Token を使って、$Header
ハッシュテーブル用意しておきます。
$Header = @{
Authorization = "Bearer xxxxxxxxxx"
'Content-Type' = 'application/json'
}
1. リッチメニューの登録
リッチメニューの登録 API で、Bot に対してリッチメニューを登録します。
$botid = 12345
$richmenuBody = @{
richmenuName = "MyRichMenu"
areas = @(@{
action = @{
type = "uri"
label = "RichMenuLabel"
uri = "https://works.do"
}
bounds = @{
x = 0
y = 0
width = 2500
height = 1686
}
})
size = @{
width = 2500
height = 1686
}
}
$richmenuRes = Invoke-RestMethod `
-Method POST `
-Uri "https://www.worksapis.com/v1.0/bots/$botId/richmenus" `
-Headers $Header `
-Body (ConvertTo-Json $richmenuBody -Depth 4)
Write-Host $richmenuRes.richmenuId
2. リッチメニュー画像のアップロード
コンテンツアップロード API で、リッチメニューに使用する画像ファイルをアップロードします。
リッチメニューに使用する画像ファイルには、以下の要件があります。
- 画像フォーマット : JPEG または PNG
- 画像のサイズ : 2500 × 1686 または 2500 × 843
- ファイルサイズ : 最大 1 MB
botId を指定したコンテンツアップロード URL は、以下で取得します、
$fileUploadbody = @{
fileName = "richmenuimage.png"
}
$Response = Invoke-RestMethod `
-Method POST `
-Uri https://www.worksapis.com/v1.0/bots/$botId/attachments`
-Headers $Header `
-Body (ConvertTo-Json $fileUploadbody)
Write-Host $Response.UploadUrl
Write-Host $Response.fileId
取得した UploadUrl
に対して、画像ファイルをアップロードします。
実際のファイルコンテンツのアップロードについては、LINE WORKS API 2.0 を PowerShell で叩いてみる (その3 : ファイルのアップロード) を参照してください。
また、fileId
は次の作業で使用しますので控えておきます。
3. リッチメニュー画像の登録
リッチメニュー画像の登録 API を呼び出します。
API URL には、 1. リッチメニューの登録 で取得した richmenuId
を、rqquest Body の fileId
には、2. リッチメニュー画像のアップロード で取得した fileId
を使用しますします。
$botId = 12345
$richmenuId = "11111111"
$fileId = "jp1.xxxxxxx"
$applyRichMenuImageBody = @{
fileId = $fileId
}
$Response = Invoke-RestMethod `
-Method POST `
-Uri "https://www.worksapis.com/v1.0/bots/$botId/richmenus/$richmenuId/image" `
-Headers $Header `
-Body (ConvertTo-Json $applyRichMenuImageBody)
4. デフォルトリッチメニューの適用
あとは、botId と richmenuId を指定して デフォルトリッチメニューの適用 API を呼び出せば、Bot のデフォルトリッチメニューが適用できます。
$botId = 12345
$richmenuId = "11111111"
$Response = Invoke-RestMethod `
-Method POST `
-Uri "https://www.worksapis.com/v1.0/bots/$botId/richmenus/$richmenuId/set-default" `
-Headers $Header