1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINE WORKSAdvent Calendar 2024

Day 20

デフォルトリッチメニューの適用 API を使ってみる

Posted at

デフォルトリッチメニューとは

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 

デフォルトリッチメニュー

というわけで、デフォルトリッチメニューが適用できました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?