質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

Q&A

0回答

2218閲覧

linebotのプログラム(php)からhttpリクエストをしたい

CandyBlossom

総合スコア10

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

0グッド

1クリップ

投稿2019/01/22 08:37

編集2022/01/12 10:55

前提・実現したいこと

linebotからpythonのbottleサーバへのhttpリクエストを送信したいです。

linebotはphpで作成しており、herokuを使用しています。
この記事を参考にさせていただきました。https://qiita.com/skycat_me/items/9f27cbd9354515df744a

無事にlinebotは作成できましたが、httpリクエストをcurlで行ったところ、Request timeoutとエラーがでました。

発生している問題・エラーメッセージ

2019-01-22T01:16:16.911584+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/" host=erekon.herokuapp.com request_id=37e586c2-c415-41c2-85b1-993c0934744a fwd="203.104.146.154" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 protocol=https

2019-01-22T09:03:24.513663+00:00 app[web.1]: [Tue Jan 22 09:03:24.511192 2019] [proxy_fcgi:error] [pid 137:tid 140615585076992] (70007)The timeout specified has expired: [client 10.113.237.99:32593] AH01075: Error dispatching request to : (polling)

該当のソースコード

php

1 2<?php 3require_once __DIR__ . '/vendor/autoload.php'; 4error_log("start"); 5 6// POSTを受け取る 7$postData = file_get_contents('php://input'); 8error_log($postData); 9 10// jeson化 11$json = json_decode($postData); 12$event = $json->events[0]; 13error_log(var_export($event, true)); 14 15// ChannelAccessTokenとChannelSecret設定 16$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient(getenv('LineMessageAPIChannelAccessToken')); 17$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => getenv('LineMessageAPIChannelSecret')]); 18 19// イベントタイプがmessage以外はスルー 20if ($event->type != "message") 21 return; 22$replyMessage = null; 23 24// メッセージタイプが文字列の場合 25if ($event->message->text == "テレビ") { 26 27 $ch = curl_init(); 28 29 curl_setopt($ch, CURLOPT_URL, "http://192.168.33.10:8080/"); 30 curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); 31 32 $html = curl_exec($ch); 33 34 $replyMessage = $html; 35 36 curl_close($ch); 37 38} else { 39 $replyMessage = $event->message->text; 40} 41 42// メッセージ作成 43$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder($replyMessage); 44 45// メッセージ送信 46$response = $bot->replyMessage($event->replyToken, $textMessageBuilder); 47error_log(var_export($response,true)); 48 49return;

試したこと

●exec関数を使い、curlを使ったリクエストの別プログラムを呼び出すことも考えましたが、bottleサーバの方にはアクセスしたログがありませんでした。
●curl_multiというものも使ってみたのですが、curlの時と同様の結果でした。
●file_get_contentsも同様でした。
●linebotのプログラムで動かす前に、いずれもローカルでプログラムを動かしましたが、そこでは期待する値が返ります。

●curlではもともと例文として載っていた http://example.com/ の方ではtrueが返ってきます。

補足情報(FW/ツールのバージョンなど)

php7.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問