リッチメニューの反映

fitstudy

2022.09.13既読 1605

API2.0でリッチメニューを登録、利用しようと考えています。言語はGoogle Apps Scriptを使用しています。
以下のリッチメニューの登録ページを参考にコンテンツアップロード、リッチメニュー画像の登録をしました。
その後、既定リッチメニューを設定するために以下のページを参考にしてBotの部分更新をしようとしています。
  const url = 'https://www.worksapis.com/v1.0/bots/' + botId;

  const payload = {
    "botId":botId,
    "defaultRichmenuId":richmenuId
  };
  var bodya = JSON.stringify(payload);
  const options = {
    'method':'patch',
    'headers':{
      'Authorization':'Bearer '+ accesstoken,
      'Content-Type':'application/json'
      },
    'payload': bodya
  };
  
  UrlFetchApp.fetch(url, options);
このようにしてリクエストしたところ、エラー400が帰ってきて、
 {"code":"INVALID_PARAMETER","description":"Request body cannot be parsed."}
というエラーメッセージが表示されてしまい、リッチメニューが反映されません。
また、
 "defaultRichmenuId":richmenuId
の部分を
"botName" : "aaa"
と書き換えても同じエラーメッセージが表示されてしまい、botの部分更新自体が上手く動いていません。
どのようにすれば良いのでしょうか。ご教授願います。

コメント2

  • 업데이트 된 답글입니다.

    irh00315

    私もGASで検証していまして、以下のような記述でBotの部分更新(defaultRichmenuIdの登録)ができたのですがいかがでしょうか?

    ~~~
    let headers = {
       "authorization": "Bearer " + accessToken,
       "Content-Type" : "application/json"
       }

    let bodys = {
      "defaultRichmenuId":"richmenuId"
    }

    let options = {
      "headers": headers,
      "method" : "patch",
      "payload" : JSON.stringify(bodys)
    }

    const botUri = "https://www.worksapis.com/v1.0/bots/"; + botId

    let response = UrlFetchApp.fetch(botUri,options)
    ~~~

    2022.09.15

    0
  • 업데이트 된 답글입니다.

    fitstudy 投稿者

    こちらのコードを参考にさせていただき、botの部分更新の実行、リッチメニューの登録をすることができました。
    ありがとうございます。

    原因は、「Path Parameters」をbodyに書くものだと勘違いしていたことでした。今までは「Path Parameters」をbodyに書いていて、問題が起きていませんでしたが、今回はそれが原因でした。
    「Path Parameters」はHTTP Requestを行う際のurlに組み込む情報であり、bodyやヘッダーに書く必要はない。という、とても当たり前な事かもしれませんが、認識が間違っていることに気づくことができました。改めてありがとうございます。

    2022.09.15

    0
前の投稿 nextCursorを利用した組織リストの取得について(Python)
次の投稿API 2.0のUser Account認証 (OAuth)にてユーザーIDを取得する方法
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。