สอบถามเรื่อง postback action ใน Line ต้องการดึงค่า data ใน postback ต้องทำอย่างไรครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามเรื่อง postback action ใน Line ต้องการดึงค่า data ใน postback ต้องทำอย่างไรครับ

สอบถามเรื่อง postback action ใน Line ต้องการดึงค่า data ใน postback ต้องทำอย่างไรครับ
ผมมีโค้ดดังนี้
actions=[
                type= "postback",
                label='postback',
                display_text='postback text',
                data='itemid=1'
            ]

ต้องการดึง  itemid ใส่ใน ตัวแปร $item เมื่อผู้ใช้กดปุ่ม เพื่อที่จะส่งค่าไปค้นหาใน db ต้องทำอย่างไรครับ
เช่น
SELECT * FROM tables WHERE id = '$item' 

ผมติดตรงที่ค่ามันไม่ส่งมา ไม่ทราบว่าต้องดึงแปปไหนครับ 


Thammarat Phanphai 10-12-2020 15:37:37

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ดูแนวทางตามลิ้งค์ด้านล่าง

    // ถ้าเป็น Postback Event
    if(!is_null($eventPostback)){
        $dataPostback = NULL;
        $paramPostback = NULL;
        // แปลงข้อมูลจาก Postback Data เป็น array
        parse_str($eventObj->getPostbackData(),$dataPostback);
        // ดึงค่า params กรณีมีค่า params
        $paramPostback = $eventObj->getPostbackParams();
        // ทดสอบแสดงข้อความที่เกิดจาก Postaback Event
        $textReplyMessage = "ข้อความจาก Postback Event Data = ";        
        $textReplyMessage.= json_encode($dataPostback);
        $textReplyMessage.= json_encode($paramPostback);
        $replyData = new TextMessageBuilder($textReplyMessage);     
    }


หรือดูแนวทางการแปลง ข้อมูล json_data เป็น object  และการแปลงเป็นตัวแปร array ประมาณนี้

$jsonData = '
{
	"events": [
		{
			"type": "postback",
			"replyToken": "ค่า replyToken ของเราที่สนทนากับ bot",
			"source": {
				"userId": "ไอดีของ user line ของเรา",
				"type": "user"
			},
			"timestamp": 1510845266945,
			"postback": {
				"data": "action=buy&item=100"
			}
		}
	]
}
';
$eventObj = json_decode($jsonData);
$dataVal = $eventObj->events[0]->postback->data;
parse_str($dataVal, $arrData);
var_dump($arrData);
echo $arrData['action']; // buy
echo $arrData['item']; // 100


บทความแนะนำที่เกี่ยวข้อง
การใช้งาน Template Message ใน LINE Messaging API ตอนที่ 3อ่าน 23,143
แปลงข้อมูล ด้วย LINE bot sdk ใน LINE Messaging API ตอนที่ 6อ่าน 18,841
Ninenik 10-12-2020
 ความคิดเห็นที่ 2

ขอบคุณครับ 

แล้วถ้ากรณีนี้ ต้อง ดึงค่ายังไงครับ 


							"type"  => "button",
							"style"  => "primary",
							"action"  => [
								// "type" => "message",
								// "label" => "Track",
								// "text" => "@Track"
								"type" => "postback",
								"label" => "Track",
								"data" => "repairID_pb=100",
								"text" => "@Track"
							]

----------------------------------------------------------------------------

if (!is_null($events['events'])) {
    $message = array();
    $message['lawmessage'] = $content;
    $message['userLineToken'] = $access_token; // Access Token จาก Channel LINE DEV
    $message['line_notify'] = $line_notify;  // Access Token จาก LINE Bot Notify
    foreach ($events['events'] as $event) {
        $message['replyToken'] = $event['replyToken']; // Reply Token มีอายุ 30 วินาที 
        $message['userId'] = $event['source']['userId']; // userId  userId ID ของ User ต่อ 1 Provider เดียวกัน
        $message['userType'] = 'u'; // กำหนดประของ user ที่ตอบบนช่องแชท
        $message['eventType'] = $event['type']; // ประเภทของข้อความ
        $message['messageType'] = $event['message']['type'];
        $message['message'] = $event['message']['text']; // ข้อความประเภท text
        $message['messageId'] = $event['message']['id']; // ID ของข้อความ 
        $message['messageTitle'] = $event['message']['title']; //  ค่า Title จาก location 
        $message['messageAddress'] = $event['message']['address']; // ค่า Address จาก location  
        $message['messageLatitude'] = $event['message']['latitude']; // ค่า Latitude จาก location  
        $message['messagelongitude'] = $event['message']['longitude']; // ค่า longitude จาก location 
        $message['messagestickerId'] = $event['message']['stickerId']; // ค่า stickerId จาก Sticker 
        $message['messagepackageId'] = $event['message']['packageId']; // ค่า packageId จาก Sticker 
    }
}


Thammarat Phanphai 10-12-2020 17:56






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ