[PHP]LINEBOT x Dialogflow x Webhook ที่รับส่ง Message objects ได้ทุก type
เห็นในกลุ่ม line dev มีคนใช้ Dialogflow เยอะมาก และส่วนใหญ่ก็เจอปัญหา Dialogflow รับเฉพาะ Message objects ที่เป็น text ซึ่งไม่สามารถตอบสนองต่อความต้องการส่งรูป ส่งโลเคชั่นของเราได้
และวันนี้เรามีวิธีแก้ปัญหาง่ายๆ ดังนี้
SOURCECODE:
https://github.com/itchampclub/php2019/archive/master.zip
- ในส่วนของ Dialogflow ยังคงเป็นเช่นเดิม ดังวันเก่า ที่เรารับ-ส่ง ทุกอย่างที่เป็น type text

- ในส่วนฝั่งการตั้งค่า line webhook ให้เราใช้ webhook ที่เราสร้างขึ้นเพื่อรับ-ส่ง type อื่นๆ

ข้ามไปยัง webhook เราจะใช้ github+heroku สายฟรีเจ้าเก่าเจ้าเดิม
เริ่มจากการบันทึกรูป if ($msg_type == ‘image’)

การบันทึกวิดีโอ elseif ($msg_type == ‘video’)

การบันทึกเสียง elseif ($msg_type == ‘audio’)

การส่งคืนรูปสติ๊กเกอร์ elseif ($msg_type == ‘sticker’)

และท้ายสุด location

และเมื่อเป็น text เราจะส่งต่อไปยัง Dialogflow ด้วย curl post ซึ่งส่งต่อไปทั้งหมดทั้งมวล นั่นเอง

- **line ที่ต้องเปลี่ยนเป็นของตัวเอง**
- 6 $channelAccessToken = ‘line-channelAccessToken’;
7 $channelSecret = ‘line-channelSecret’; - 63 $picurl = ‘https://your-app-name.herokuapp.com' . $fileFullSavePath;
- 95 $vidurl = ‘https://your-app-name.herokuapp.com' . $fileFullSavePath;
- 127 $audurl = ‘https://your-app-name.herokuapp.com' . $fileFullSavePath;
- 195 $url = “https://bots.dialogflow.com/line/your-app-name/webhook";
ข้อมูลการส่งต่อ webhook จาก https://www.ninenik.com/%E0%B8%AA%E0%B9%88%E0%B8%87%E0%B8%95%E0%B9%88%E0%B8%AD_Webhook_Event_%E0%B8%88%E0%B8%B2%E0%B8%81_Line_%E0%B9%84%E0%B8%9B%E0%B8%A2%E0%B8%B1%E0%B8%87_Webhook_%E0%B9%83%E0%B8%99_DialogFlow_-926.html