สอบถามเรื่อง 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
ดูแนวทางตามลิ้งค์ด้านล่าง

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ถ้าเป็น 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 ประมาณนี้

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$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,644
แปลงข้อมูล ด้วย LINE bot sdk ใน LINE Messaging API ตอนที่ 6อ่าน 19,357
Ninenik 10-12-2020
 ความคิดเห็นที่ 2

ขอบคุณครับ 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
แล้วถ้ากรณีนี้ ต้อง ดึงค่ายังไงครับ
 
 
                            "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) ขอบคุณครับ