蒸馏厂/信使

组件,允许信使机器人和您的应用程序之间的通信。

1.0.0 2016-08-12 15:09 UTC

This package is auto-updated.

Last update: 2024-09-23 07:19:03 UTC


README

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

Facebook 信使

此存储库包含一些用于处理 Facebook 信使机器人和 laravel/lumen 的工具。此存储库在 Facebook 信使的测试版上运行。肯定会带来一些重大变化,但我猜这可能对你有帮助。

目录

  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 首名姓

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

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