私は、LINE BOT APIトライアルSDK PHP(https://github.com/line/line-bot-sdk-php)を使用しています。PHP SDKを使用してLINEユーザーmidを取得するには?
しかし、この方法のため:彼らにメッセージを送信するために、ユーザーのMIDを取得する方法
$res = $bot->sendText(['TARGET_MID'], 'Message');
?
ありがとうございました。
私は、LINE BOT APIトライアルSDK PHP(https://github.com/line/line-bot-sdk-php)を使用しています。PHP SDKを使用してLINEユーザーmidを取得するには?
しかし、この方法のため:彼らにメッセージを送信するために、ユーザーのMIDを取得する方法
$res = $bot->sendText(['TARGET_MID'], 'Message');
?
ありがとうございました。
1)インタラクティブなユーザーのmid
を取得するための非常に簡単な方法は)本当に、楽しいハックの(よりAPI instructionsごとにコールバックURLを登録することで、そのように似ているURLにPOSTデータをキャプチャ:
// /callback/index.php
<?php
$postdata = file_get_contents("php://input");
@file_get_contents('https://'.$_SERVER['SERVER_NAME'].'/LINE/' . json_encode($postdata));
次に、チャネルコンソールでQRコードをスキャンし、試用ボットをLINEアカウントに追加します。それが終わったら、素早く "こんにちは!"テキスト。
必要に応じてPOSTデータをテキストファイルに保存するか、サーバーログを確認できます。
163.128.118.223 - - [03/Sep/2016:07:25:25 -0700] "POST /line/callback/ HTTP/1.1" 200 - "-" "ChannelEventDispatcher/1.0"
106.152.218.107 - - [03/Sep/2016:07:25:25 -0700] "GET /LINE/{\"result\":[{\"content\":{\"toType\":1,\"createdTime\":1472114754839,\"from\":\"ub7dbd4a12c322f6c0117773d739c55a4\",\"location\":null,\"id\":\"4357194057879\",\"to\":[\"u2b6a4ba287028dee7291122094dac827\"],\"text\":\"Hello!\",\"contentMetadata\":{\"AT_RECV_MODE\":\"2\",\"SKIP_BADGE_COUNT\":\"true\"},\"deliveredTime\":0,\"contentType\":1,\"seq\":null},\"createdTime\":1472912724868,\"eventType\":\"138311609000106301\",\"from\":\"u236d23c2e36bd87217655609a1c31cb8\",\"fromChannel\":1241102815,\"id\":\"WB1519-3102846635\",\"to\":[\"u2b6a4ba287028dee7291122094dac827\"],\"toChannel\":1462261375}]} HTTP/1.1" 404 15 "-" "-"
\"from\":\"ub7dbd4a12c322f6c0117773d739c55a4\"
が適切な部分である:たとえば、あなたはこのようなものが表示される場合があります。
2)あなたはreceiving messagesを始めるしたい場合は、あなたのコールバックスクリプトとして次のように開始することができます。 BOTに「mid」というメッセージを送信するだけで、mid
と応答する必要があります。ここで
私はあなたのために含まsignature verificationで作ら始まるコールバックスクリプトです。
// /callback/index.php
<?php
// Show all errors for testing
error_reporting(E_ALL);
// SDK is installed via composer
require_once __DIR__ . "/includes/vendor/autoload.php";
use LINE\LINEBot;
use LINE\LINEBot\HTTPClient\GuzzleHTTPClient;
// Set these
$config = [
'channelId' => LINE_CHANNEL_ID,
'channelSecret' => LINE_CHANNEL_SECRET,
'channelMid' => LINE_CHANNEL_MID,
];
$sdk = new LINEBot($config, new GuzzleHTTPClient($config));
$postdata = @file_get_contents("php://input");
$messages = $sdk->createReceivesFromJSON($postdata);
// Verify the signature
// REF: http://line.github.io/line-bot-api-doc/en/api/callback/post.html#signature-verification
$sigheader = 'X-LINE-ChannelSignature';
// REF: http://stackoverflow.com/a/541450
$signature = @$_SERVER[ 'HTTP_'.strtoupper(str_replace('-','_',$sigheader)) ];
if($signature && $sdk->validateSignature($postdata, $signature)) {
// Next, extract the messages
if(is_array($messages)) {
foreach ($messages as $message) {
if ($message instanceof LINEBot\Receive\Message\Text) {
$text = $message->getText();
if ($text == "mid") {
$fromMid = $message->getFromMid();
// Send the mid back to the sender and check if the message was delivered
$result = $sdk->sendText([$fromMid], 'mid: ' . $fromMid);
if(!$result instanceof LINE\LINEBot\Response\SucceededResponse) {
error_log('LINE error: ' . json_encode($result));
}
} else {
// Process normally, or do nothing
}
} else {
// Process other types of LINE messages like image, video, sticker, etc.
}
}
} // Else, error
} else {
error_log('LINE signatures didn\'t match');
}
はhttps://github.com/line/line-bot-sdk-php/blob/master/src/LINEBot/Receive/Receive.php見てもLINEのBOTのAPIをお読みください。ユーザーがボットに何かを入力すると、ボットはメッセージを受信し、ボットに送信した人を知ることができます。 – iownthegame
@iownthegame回線ボットを設定したくない場合、送信メッセージの例だけを使用したい場合はどうなりますか?どのようにその場合のターゲットの中間を取得するには? – Drakes