quangtam/messenger

组件,允许您的应用与聊天机器人进行通信。

1.0.2 2017-01-24 12:10 UTC

This package is auto-updated.

Last update: 2024-09-23 07:48:16 UTC


README

Scrutinizer Code Quality Code Coverage Build Status Total Downloads Latest Stable Version License

Facebook Messenger

本仓库包含一些用于处理Facebook聊天机器人和laravel/lumen的工具。本仓库适用于Facebook聊天机器人的beta版本。肯定会有一些重大变化,但我相信这可以帮到您。

目录

  1. 安装
  2. 实现合约
  3. 更改服务提供商
  4. 聊天合约实现示例
  5. 创建应用
  6. 托管您的应用
  7. 外观
    1. 发送文本消息
    2. 发送图片消息
    3. 获取当前用户资料
    4. 发送卡片
    5. 持久菜单
  8. 示例

##Laravel的安装

composer required distilleries/messenger

将服务提供商添加到 bootstrap/app.php

   
   $app->register(Distilleries\Messenger\MessengerLumenServiceProvider::class);
   

##Lumen的安装

composer required distilleries/messenger

将服务提供商添加到 config/app.php

    'providers' => [
          \Distilleries\Messenger\MessengerServiceProvider::class,
    ]

并且在外观(也在 config/app.php)中替换laravel外观 Mail

    'aliases' => [
       'Messenger'           => 'Distilleries\Messenger\Facades\Messenger'
    ]

实现合约

为了方便地在您的应用中实现功能,我创建了一个 Distilleries\Messenger\Contracts\MessengerReceiverContract

更改服务提供商

要更改类,请访问 app/Providers/MessengerServiceProvider.php 并更改share函数中的类。

    
    $this->app->singleton('Distilleries\Messenger\Contracts\MessengerReceiverContract', function ($app) {
                return new MyMessengerClass();
    });
      

聊天合约实现示例

class MyMessengerClass implements MessengerContract
{

  
    public function receivedAuthentication($event)
    {
        $senderID    = $event->sender->id;
        Messenger::sendTextMessage($senderID, "Authentication successful");
    }


    public function receivedMessage($event)
    {
        $senderID    = $event->sender->id;
        Messenger::sendTextMessage($senderID, 'Test');
        Messenger::sendImageMessage($senderID, env('APP_URL') . '/assets/images/logo.png');,
        Messenger::sendCard($senderID, [
            'template_type' => 'generic',
            'elements'      => [
                [
                    "title"     => "Messenger Boilerplate",
                    "image_url" => env('APP_URL') . '/assets/images/logo.png',
                    "subtitle"  => "example subtitle",
                    'buttons'   => [
                        [
                            'type'  => "web_url",
                            'url'   => "https://github.com/Distilleries/lumen-messenger-boilerplate",
                            'title' => "Come download it!"
                        ]
                    ]
                ]

            ]
        ]);
  
    }

    public function receivedDeliveryConfirmation($event)
    {
        $senderID    = $event->sender->id;
        Messenger::sendTextMessage($senderID, 'Test');
    }


    public function receivedPostback($event)
    {
       $senderID       = $event->sender->id;
       Messenger::sendTextMessage($senderID, 'Test');
    }

}

创建应用

按照聊天文档创建应用 https://developers.facebook.com/docs/messenger-platform/quickstart

  • 对于webhook uri使用 /webhook
  • 对于 VALIDATION_TOKEN,生成一个随机密钥

在创建应用和页面并关联后,将 .env.example 复制到 .env

    VALIDATION_TOKEN=
    PAGE_ACCESS_TOKEN=

托管您的应用

您必须托管您的应用才能使用它。Facebook无法向您发送本地webhook。因此,在开始开发之前,请确保您已准备好托管。

默认情况下,您的机器人处于沙盒状态。只有拥有应用权限的人才能与其交谈。

外观

发送文本消息

官方文档

   Messenger::sendTextMessage($senderID, "Authentication successful");

发送图片消息

官方文档

  Messenger::sendImageMessage($senderID, env('APP_URL') . '/assets/images/logo.png');
  

获取当前用户资料

官方文档

  Messenger::getCurrentUserProfile($senderID);
  

发送卡片

官方文档

        Messenger::sendCard($senderID, [
             'template_type' => 'generic',
             'elements'      => [
                 [
                     "title"     => "Messenger Boilerplate",
                     "image_url" => env('APP_URL') . '/assets/images/logo.png',
                     "subtitle"  => "example subtitle",
                     'buttons'   => [
                         [
                             'type'  => "web_url",
                             'url'   => "https://github.com/Distilleries/lumen-messenger-boilerplate",
                             'title' => "Come download it!"
                         ]
                     ]
                 ]
 
             ]
         ]);

示例

在这个聊天类中,您可以说 hi,机器人会像这样回答

Hi First name Last name

发送带有右下角图标的图片

我为您定制了个人资料图片。您喜欢吗?