4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LINE Messaging API for PHPをherokuで運用するには?

Last updated at Posted at 2017-03-08

はじめに

LINE Messaging API for PHPでbotを作り、それをどうしてもherokuで動かしたかったのですが、どうにもこうにも反応してくれない。ふと、Fixieのプロキシを通してないからだと気付き、SDKを少しだけ改修する必要があることに気がつきました。ちなみにLINE Messaging API for PHPのライセンスは「Apache License v2.0」なので改修OKです。

LINE BOT API Trialで作られたbotの記事などでは、こうしたことにはほとんど触れられてないので気にせず動かせたのだと思いますが、LINE Messaging APIになってからは、恐らくこの修正をしないとherokuでは動かせないのではないかと思います。

そこでこの記事では、heroku上でどうしてもLINE Messaging API for PHPを動かしたい人のためのヒントになればと思いまとめてみました。

herokuの設定

この記事に興味を持ってくれた人は言われなくてもわかるかと思いますが、まずherokuでIPを固定にするためにアドオンのFixieを導入してください。導入後、FixieのプロキシURLが自動的にherokuの環境変数に登録されますが、ポート番号は削除しておきます。

修正前
FIXIE_URL http://fixie:**********.usefixie.com:80

修正後
FIXIE_URL http://fixie:**********.usefixie.com

またFixieのアカウント設定の画面に表示される二つのIPを控えておいてください。

LINE BUSSINESS CENTERの設定

アカウント一覧に表示れている制作中のボットのカラムから「LINE developers」の画面に移動し、サイドメニューの「Server IP Whitelist」を選択してください。表示されているフォームにFixieで控えておいた二つのIPを登録しておきます。ちなみにポート番号は不要なようです。

SDKの改修

/vendor/linecorp/line-bot-sdk/src/HTTPClient/CurlHTTPClient.php

改修前:90行目

$headers = array_merge($this->authHeaders, $this->userAgentHeader, $additionalHeader);

$options = [
    CURLOPT_CUSTOMREQUEST => $method,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_BINARYTRANSFER => true,
    CURLOPT_HEADER => true,
];

改修後:90行目

$headers = array_merge($this->authHeaders, $this->userAgentHeader, $additionalHeader);

$options = [
    CURLOPT_CUSTOMREQUEST => $method,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_BINARYTRANSFER => true,
    CURLOPT_HEADER => true,
    // 以下を追加します。
    CURLOPT_HTTPPROXYTUNNEL => true,
    CURLOPT_PROXYPORT => '80',
    CURLOPT_PROXY => getenv('FIXIE_URL'),
];

プロキシのURLは直接記述せず、登録してある環境変数を参照した方がスマートかと思います。

最後に

自分の場合は、このことに気がつくまでに何時間も無駄にしてしまいました。。。どうしてもherokuでLINEボットを動かしたいと思っている人のヒントになれば幸いです。それともこんなことをしなくても動かすことができるのでしょうか。何かご存知でしたら教えていただければと思います。LINE BOT AWARDSにわたしもエントリーしてみたのですが、さてさて結果はどうなるんでしょうか。

それでは、このへんで。

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?