LINE ボットのテスト時にちょっとはまったので、メモ
問題に遭遇するまで
こちらの記事で書いたようにテスト用のLINE アカウントを使って、LINE Developer アカウントを設定しました。
次に、チュートリアルに従って、作成した LINE Developer アカウントで、プロバイダおよびチャンネルを作成します。
チャンネルの Webhook URL (API Gateway + Lambda で構成しました)を設定して、テストしてみると、ちゃんと動作しています。このあたりのことはたくさん例があるので、省略します。
にしても、いい感じですね。
さて、仕事用のテストのため、作成したチャンネルを別途用意した LINE 公式アカウント(ビジネスアカウントで管理)と連携させてみようと思います。 LINE Official Account Manager にログインして、公式アカウントの『設定』(歯車アイコン)をクリックして、『Messaging API』を選択します。
上記のような画面が出てくるので、『Messaging API を利用する』ボタンを押すと、
と、アカウントと連携するように求められます。 『アカウントと連携』ボタンを押すと、
と連携画面が出てくるので、『LINEアカウントと連携』をクリックします。
のようなログイン画面が出てくるので、LINE Developer のアカウントのメールアドレスとパスワードを入れて、連携します。
すると、
のように『すでに登録されているLINEアカウントです』と表示されて、連携できません。
どういうこと?
これを解決しようと思っていろいろと調べました。
原因
結論からすると、下記が原因でした。
- LINE Developer アカウント上でチャンネルを作った際に、公式アカウント(および LINE Business ID)が自動的に作成される
- LINE アカウントは1つの LINE Business ID としか連携できない
つまり、LINE Developer アカウント上でチャンネルを作ると、そのDeveloper アカウント(LINE アカウントですね)に紐づく LINE Business ID および公式アカウントが自動的に作成されて、そのうえ、チャンネル(Developer アカウント)と連携しているので、別の LINE Business ID とは連携できないよ、ということでした。
なんじゃそりゃ??という感じです。
前者については、よくよくチュートリアルを見ると、チャンネルを作成した際に公式アカウントが存在しているよ、と触れているところがありますね(こちらのページの『5.確認する』の最後当たりにあります)。
とはいえ、公式アカウントが作成されるときに一緒に LINE Business ID も作成されるというのは意外でした。
あと、LINE Developer 上で公式アカウントや LINE Business ID が作成されるのはいいとして、LINE アカウントと公式アカウントを管理する LINE Business ID が1対1でしか紐づけられないということが、ドキュメントからわからないのが気になるところです(LINE のサポートさんに問い合わせた際に教えていただきました) 。
これって、LINE の世界では当たり前なんでしょうかね?
だとすると、初心者にもこの辺の事情がもうちょっとわかるようにドキュメントを整備してもらえるとありがたいです。
対応策
まあ、今回はテストなので気にしなくてもいいっちゃいいんですが、例えば、会社さんがすでに公式アカウントを運用しており、その LINE Business ID に対して、ボット用の公式アカウントを追加しようとするとこのままじゃ追加できません。
なので、この状態を解消する方法を探ってみました。
手順1:アカウントの削除
上記を踏まえると、 LINE Developer 上でチャンネルを作成した際に、自動的に作られた LINE Business ID を削除すればいいのではないかと考えました。
早速やってみます。
最初に LINE Developer アカウントで作成済みのチャンネルをすべて消します。チャンネルの削除の際には、 LINE Official Account Manager で作業をするので、既にログインした状態になっていると思います。もし、未ログインなら、 LINE Developer アカウントのメールアドレスとパスワードでログインします。
そのうえで、『ユーザープロフィール』を表示させます。
ここで『アカウントの削除』を選択します。 無事に削除されたようなので、再度 LINE Official Account Manager に LINE Developer のメールアドレスとパスワードでログインしてログインできないことを確認してみます。
あれ?ログインできてしまいます。
実はここが盛大にはまったところなんです。
LINE アカウントで LINE Official Account Manager にログインすると、その時点で再度 LINE Business ID が作成されるそうです。
最初は『アカウントの削除』が機能していないのか?と疑ったんですが、そうではなくて、いったんアカウントは削除されているんだけど、ログインしたのでその時点で LINE Business ID が再作成される、という状態だったそうです(これもサポートさんに教えていただきました)。
自動で LINE Business ID が作成されるのって、ちょっとわかりにくいなー。
手順2:連携
まあ、ちょっと気持ち悪いですが、上記で『アカウントの削除』を行ったら、 LINE Developer アカウントに対応した LINE Business ID は消えていると信じて、別の LINE Business ID 上の公式アカウントから Messaging API の設定を行います。
最初に書いた手順で進めると、順調に LINE アカウントの連携を求められました。
ここで、LINE Developer のアカウント情報を入力します。
今度は怒られることなく、プロバイダを選択するか新規に作成するか求められました(さきほどチャンネルは削除したけど、プロバイダは残していたため)。
新規にプロバイダと作成するのを選んで進んでいくと
と確認が求められるので、OKとします。すると、問題なく連携できました!
LINE Developer のほうを確認すると、チャンネルの名前は、公式アカウントと同じ名前として作成されていることが確認できました。
いやー、難解ですね。
まとめると
上記の経緯からすると、既存の LINE 公式アカウントに対してボットを登録するには、下記の手順で進める必要があるようです。
- LINE アカウントを使って、LINE Developer アカウントを設定(試しにチャンネルを作らないように)
- ボットを設定したい公式アカウントを持つ LINE Business ID で LINE Official Account Manager にログイン
- Messaging API を開く
- LINE アカウントの連携を求められたら、最初に登録した LINE Developer アカウントを指定
- プロバイダが作成される
- 無事、設定される
LINE でボットやってる人には当たり前なんだろうか?
ちなみに、公式の手順などもありましたが、ちょっと簡略化されてる気がします。
素朴な疑問
ここまでいろいろとやって、ふと
LINE Developer アカウントと LINE Business ID は1対1の連携なので、プロバイダを複数持てるけど、何かうれしいことあるのか?
というのが気になります。
もうちょっと具体的に開発者の立場からすると、LINEで仕事をする際には、
1つの LINE developer アカウントには1つの LINE Business ID しか連携できません。そうなると、複数の会社さんにボットを提供するような仕事をしていこうとすると、会社分だけ LINE Developer アカウントが必要になります。
ということになります。
もし、この Developer アカウントを開発側で持とうとすると、複数の電話番号が必要になるので、ちょっと面倒そうです(Twilio のようなIP電話の電話番号では LINE アカウントはとれないですしね)。
現実的には、LINE Developer アカウント(LINE アカウント)は会社さんから提供していただいて、開発に必要な権限を設定してもらう形にするのがいいのかもしれません。
個人的には、せっかくプロバイダとかあるんで、プロバイダ単位で、LINE Business ID と連携できるようになるといいなと思います。
どうですかね? > LINE さん
参考
LINE Developer のQ&Aでも関連しそうな質問がいくつかありました。ずばりのものはなかったのですが、一応参考までに載せておきます。
LINE Business ID について
上記で少し触れてますが、 LINE Business ID というのがあって、それを利用するためには、
- LINE アカウントでログオン
- LINE ビジネスアカウント(メールアドレスで登録)でログオン
という2種類があるようです。
LINE ビジネスアカウントでの LINE Developer へのログイン
下記の質問にあるように、できないようです。