รบกวนขอคำแนะนำครับ eventMemberJoined ไม่ทำงานครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา รบกวนขอคำแนะนำครับ eventMemberJoined ไม่ทำงานครับ

รบกวนขอคำแนะนำครับ eventMemberJoined ไม่ทำงานครับ
ผมลองทำตามสคริปที่แอดมินบอกในหัวข้อ "แปลงข้อมูล ด้วย LINE bot sdk ใน LINE Messaging API ตอนที่ 6" ทุกอย่างเวิร์คและใช้งานได้หมดครับ มีเพียง eventMemberJoined ครับ ที่ไม่ทำงาน ไม่หือไม่อือครับ ไม่ว่าสมาชิกจะ joint เข้ามาใน Room หรือ Group มันก็ไม่ทำงานเลยครับ ผมต้องการให้มันทักทาย Welcome สมาชิกที่เข้า Room หรือ Group ที่หน้าห้องเลยนะครับ

 
   // ถ้ามีสมาชิกคนอื่น เข้ามาร่วมใน room หรือ group 
    // room คือ สมมติเราคุยกับ คนหนึ่งอยู่ แล้วเชิญคนอื่นๆ เข้ามาสนทนาด้วย จะกลายเป็นห้องใหม่
    // group คือ กลุ่มที่เราสร้างไว้ มีชื่อกลุ่ม แล้วเราเชิญคนอื่นเข้ามาในกลุ่ม เพิ่มร่วมสนทนาด้วย
    if(!is_null($eventMemberJoined)){
            $arr_joinedMember = $eventObj->getEventBody();
            $joinedMember = $arr_joinedMember['joined']['members'][0];
            if(!is_null($groupId) || !is_null($roomId)){
                if($eventObj->isGroupEvent()){
                    foreach($joinedMember as $k_user=>$v_user){
                        if($k_user=="userId"){
                            $joined_userId = $v_user;
                        }
                    }                       
                    $response = $bot->getGroupMemberProfile($groupId, $joined_userId);
                }
                if($eventObj->isRoomEvent()){
                    foreach($joinedMember as $k_user=>$v_user){
                        if($k_user=="userId"){
                            $joined_userId = $v_user;
                        }
                    }                   
                    $response = $bot->getRoomMemberProfile($roomId, $joined_userId);    
                }
            }else{
                $response = $bot->getProfile($userId);
            }
            if ($response->isSucceeded()) {
                $userData = $response->getJSONDecodedBody(); // return array     
                // $userData['userId']
                // $userData['displayName']
                // $userData['pictureUrl']
                // $userData['statusMessage']
                $textReplyMessage = 'สวัสดีครับ คุณ '.$userData['displayName'];     
            }else{
                $textReplyMessage = 'สวัสดีครับ ยินดีต้อนรับ';
            }
//        $textReplyMessage = "ยินดีต้อนรับกลับมาอีกครั้ง ".json_encode($joinedMember);
        $replyData = new TextMessageBuilder($textReplyMessage);                     
    }
 


Kriengsak Aliair 06-01-2020 14:51:16

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

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


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


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

 ความคิดเห็นที่ 1
ไม่แน่ใจว่า Line เขาปรับอะไรไหม ไว้ลองแล้ว จะมาอัพเดทอีกที 


บทความแนะนำที่เกี่ยวข้อง
แปลงข้อมูล ด้วย LINE bot sdk ใน LINE Messaging API ตอนที่ 6อ่าน 18,882
ninenik 07-01-2020
 ความคิดเห็นที่ 2
ขอบคุณมากครับ


Kriengsak Aliair 07-01-2020 11:37
 ความคิดเห็นที่ 3
เท่าที่ทดสอบดู ยังใช้งานได้ปกติ แต่จะมีข้อสังเกต 
ถ้าเราสร้าง GROUP แล้วเชิญ สมาชิกคนอื่น พร้อมกับ bot เข้ามาใน GROUP 
BOT จะเข้ามาใน GROUP อัตโนมัติ เกิด Join Event  ส่วนสมาชิกคนอื่น จะต้องกด Join หรือ เข้าร่วมก่อน
และเมื่อกดเข้าร่วม จะเกิด MEMBER JOIN Event ข้อความก็จะทักทาย จาก BOT ไปยังสมาชิกคนนั้นที่กดเข้าร่วม GROUP 
ตามรูปแบบโค้ดที่เรากำหนดไว้ในตัวอย่าง

แต่ถ้าเป็น ROOM จะเป็นลักษณะ เราอยู่หน้า ที่กำลังคุยกับ BOT และต้องการเชิญคนอื่นเข้ามาคุยด้วย หรือ
เราคุยกับคนอื่นอยู่ และต้องการเชิญ ฺBOT และคนอื่นๆ เข้ามาคุยด้วย กรณี ROOM นี้ ตัว BOT และ คนอื่นๆ ที่ถูกเชิญ จะเพิ่มเอง
อัตโนมัติ โดยไม่ต้องกดเข้าร่วม แต่จะยังไม่เกิด Join Event ขึ้นในทันทีเหมือนกรณี GROUP  โดย Join Event จะเกิดเมื่อมีใครคนใด
คนหนึ่งใน ROOM ทักหรือส่งข้อความเข้ามา ตัว Join Event ของ BOT ที่เข้าร่วม ROOM จึงทำงานและแจ้งว่าขอเข้าร่วมห้องสนทนา
ตามรูปแบบการทำงานของโค้ดตัวอย่าง และ MEMBER JOIN Event จะไม่เกิด หากถูกเชิญเข้าร่วมพร้อมกับ BOT ดังนั้น จะไม่มี
ข้อความทักทายไปยังคนอื่นที่ถูกเชิญพร้อม BOT  แต่ถ้าเชิญคนอื่นๆ หลังจากมี BOT อยู่ใน ROOm แล้ว เช่น เชิญคนที่ 4 กรณีนี้จะมี
MEMBER JOIN Event ขึ้น และจะแสดงข้อความทักทายคนที่ถูกเชิญ หรือกรณี คนที่ถูกเชิญพร้อม BOT แต่ออกจาก ROOM ไป 
และถ้ามีการเชิญเข้ามาใหม่ ซึ่งจะเป็นกรณีการเข้ามา หลังจาก ฺBOT อยู่ใน ROOM แล้ว กรณีนี้ จะเกิด MEMBER JOIN Event ขึ้น
และแสดงข้อความต้อนรับ

**
JOIN Event คือ Event ของ BOT
MEMBER JOIN Event คือ Event ของ สมาชิกอื่นๆ

**
หากทำทุกขั้นตอนแล้ว ไม่มี MEMBER JOIN Event เกิดขึ้นเลย ให้ตรวจสอบว่าใช้ PHP LINE SDK เวอร์ชั่น 3.7.0 ขึ้นไปหรือไม่
เพราะ MEMBER JOUN Event จะมีในเวอร์ชั่น 3.7.0 ถ้าเป็นเวอร์ชั่นที่ตำกว่า ให้อัพเดท เป็นเวอร์ชั่น 3.7.0 หรือเวอร์ชั่นล่าสุด
ตรวจสอบเวอร์ชั่นที่ใช้งานในไฟล์ composer.json
https://github.com/line/line-bot-sdk-php


บทความแนะนำที่เกี่ยวข้อง
ส่งข้อความด้วย LINE bot sdk php สำหรับ LINE Messaging API ตอนที่ 2อ่าน 30,015
แปลงข้อมูล ด้วย LINE bot sdk ใน LINE Messaging API ตอนที่ 6อ่าน 18,882
ninenik 07-01-2020
 ความคิดเห็นที่ 4
ขอบคุณมากครับ เดี๋ยวจะลองดูครับ ได้ผลยังไงจะมาอัพเดตให้ทราบครับผม


Kriengsak Aliair 09-01-2020 21:40
 ความคิดเห็นที่ 5
ไฟล์ composer.json ล่าสุดของผมครับ
============================


{
  "name": "linecorp/line-bot-sdk",
  "description": "SDK of the LINE BOT API for PHP",
  "keywords": [
    "LINE",
    "bot",
    "sdk"
  ],
  "type": "library",
  "homepage": "https://github.com/line/line-bot-sdk-php",
  "license": "Apache-2.0",
  "authors": [
    {
      "name": "moznion",
      "email": "moznion@gmail.com",
  "role": "Retired"
    },
    {
      "name": "Satoru Yoshihara",
      "email": "vaduz0@gmail.com",
  "role": "Maintainer"
    },
    {
      "name": "Satoshi Shibuya",
      "email": "satosby@gmail.com",
  "role": "Maintainer"
    },
    {
      "name": "Shunsuke Mori",
      "email": "morimorim7180@gmail.com",
  "role": "Maintainer"
    }
  ],
  "require": {
    "php": ">=5.5",
    "ext-curl": "*",
    "ext-json": "*",
    "ext-sockets": "*"
  },
  "require-dev": {
    "phpunit/phpunit": "^4.8.24||^5||^6",
    "phpmd/phpmd": "~2.4",
    "squizlabs/php_codesniffer": "~2.6||^3",
    "indigophp/hash-compat": "~1.1.0",
    "ext-posix": "*"
  },
  "suggest": {
    "apigen/apigen": "Install with roave/better-reflection:dev-master to generate docs",
    "roave/better-reflection": "Required by apigen/apigen:dev-master"
  },
  "autoload": {
    "psr-4": {
      "LINE\": "src/"
    }
  },
  "autoload-dev": {
    "psr-4": {
      "LINE\Tests\": "tests/"
    }
  },
  "scripts": {
    "test": "phpunit --debug tests",
    "doc": "apigen generate src --destination docs",
    "cs": "phpcs --standard=PSR2 src tests examples/EchoBot/src examples/EchoBot/public examples/KitchenSink/src examples/KitchenSink/public",
    "md": "phpmd --ignore-violations-on-exit src,examples/EchoBot/src,examples/EchoBot/public,examples/KitchenSink/src,examples/KitchenSink/public text phpmd.xml"
  }
}


Kriengsak Aliair 09-01-2020 21:56
 ความคิดเห็นที่ 6
ส่งตัวอย่างมาให้ดูครับ ว่าบอทมันไม่ทักทายเวลามีสมาชิกใหม่เข้ามาใน Group ครับ จากรูปผมลองสร้าง Group ชื่อ Test Bot มีผมกับบอทอยู่ 2 คนใน Group
จากนั้นผม invite สมาชิกที่ชื่อ Kiroh เข้ามาใหม่ หลังจากสมาชิก Join เข้า Group บอทก็ไม่ส่งทักทายสมาชิกแต่อย่างใดเลยครับ (บอทผมตัวที่ชื่อ TMA ครับ)








Kriengsak Aliair 09-01-2020 22:21
 ความคิดเห็นที่ 7
น่าจะต้องไล่ดูตามที่อธิบายไป ไฟล์ composer.json เป็นไฟล์ที่เราติดตั้ง package ต่างๆ จะมีเวอร์ชั่นบอก ไม่ใช่ไฟล์ ของ line sdk



บทความแนะนำที่เกี่ยวข้อง
แปลงข้อมูล ด้วย LINE bot sdk ใน LINE Messaging API ตอนที่ 6อ่าน 18,882
ninenik 10-01-2020
1






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