LINE APIで「{“message”: “The use of image, title and the number of actions should be consistent for all columns.”」と出る時の対処法

今回はLINE DevelopersのMesseaging APIの話

LinebotでApiErrorが発生してしまう場合の対処法

調べて中々解決法が見当たらなかったのでメモ。

デプロイ後、メッセージを送ってもテンプレートが返ってこない

gitからHerokuにpushした際は問題ないが、
デプロイ後カルーセルテンプレートを呼び出そうとすると

linebot.exceptions.LineBotApiError: LineBotApiError: status_code=400,(以下略
Code language: HTTP (http)

と表示され、失敗してしまう。

自分の場合、エラーメッセージは以下の通り。

error_response={"details": [{"message": "The use of image, title and the number of actions should be consistent for all columns.", "property": "template"}, {"message": "cannot contain null elements", "property": "template/columns"}], "message": "A message (messages[0])\u00a0in the request body is invalid"},
Code language: JavaScript (javascript)

ひとつずつ見ていこう。

Error 1.The use of image, title and the number of actions should be consistent for all columns.

まず最初の

“The use of image, title and the number of actions should be consistent for all columns.”

単純に英語を読むと、

“画像、タイトル、アクション数の使い方は、すべてのコラムで統一すること”

うん、それはわかる。

私の場合CarouselColumnを用いていたが、それぞれの列に対してactionsは2つずつ設置している。
なんなら、列を一つに減らしてみてもactionsが1つ→2つに増えた段階で上記のエラーが出るようだ

LINE API公式Document
公式ドキュメントにも文字通りのことしか描かれていない

こちらのGithub質問フォーラムに同じエラーが投稿されていたものの、見てもさっぱり。
エラーメッセージと同じことしかやりとりをしていない・・。

ということは、自分が何か勘違いをしていて
「文法上問題ないはずのコードで既にエラーは起きているッ!」
ということなのでは!

取り敢えず続きをみていこう。

Error 2. cannot contain null elements.

ヌル要素はどこにも含ませていない。次。

(label=””などにしたり、labelオプションをそもそも書いていなかったりするactionがあると、動作しなくなる。

Error 3.A message (messages[0])\u00a0in the request body is invalid.

\u00a0inは空白の文字コードのこと。
間違えてどこかで全角スペースをいれてしまったかと思ってVSCode上を探るも、見当たらず。

こちらも直接的な要因ではなさそうだ。

結論

珍しくエラーメッセージを見ても何も思い当たる節がなく、1~2時間ほど試行錯誤した結果、

「,(カンマ)」の位置と数に問題があったことが判明。

LINE API成功画面
無事出るようになった

具体的に変えたのは、
1.actions内の[]末尾と、
2.Carouselcolumnを格納しているリストの[]末尾。

整形すると見やすくてベネ

1は元々「,」を入れてなかったのを加え、
2は逆に「,」を抜いた。

2は元々,が有りで動いていたので、消す作業は不要だったかもしれない。
ただ、Pythonだとリストの末尾のインデックスに,があろうがなかろうが動くはずなので、その辺がちょっとしっくりこなかった。jsonで受け渡す時やCarouselcolumnクラスで仕様が変わっているのだろうか。

2はコンマありでもなしでも動いて、1は入れてないと動かないというのがモヤモヤするが、
動くようになったので良しとしよう。

ドキュメントちゃんと読んでないので、ちゃんと書いてあったらゴメンナサイ。
ちゃんと読みたい方はこちらからどうぞ↓

Messaging API reference
The LINE Developers site is a portal site for developers. It contains documents and tools that will help you use our various developer products. Creating LINE L...

今回の記事は以上になります。
お読みいただきありがとうございました!

よく「学習」しているぞッ!(早朝テンション)
まる。

Python歴3年のフルスタックエンジニア兼ブロガー兼ヨギー。大学は心理学、趣味はヨガ。
名刺・HP制作やハタヨガレッスンやってます。

まる。をフォローする
タイトルとURLをコピーしました