vonage/vonage_drupal

用于配置 Vonage PHP SDK 的 Drupal 模块

安装: 57

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 1

开放问题: 1

类型:drupal-module

0.1.1 2020-12-09 02:11 UTC

This package is auto-updated.

Last update: 2024-09-09 10:01:39 UTC


README

Contributor Covenant Apache 2.0 licensed

Nexmo is now known as Vonage

这是用于 Drupal CMS 的 Vonage API PHP 客户端模块。要使用此模块,您需要一个 Vonage 账户。在 nexmo.com 上免费注册。

此捆绑包目前处于开发/测试状态,因此可能存在错误

安装

步骤 1:将模块添加到 composer.json

打开命令行控制台,进入您的项目目录并执行以下命令以下载此模块的最新稳定版本

$ composer require vonage/vonage_drupal

步骤 2:安装模块

该模块将自动被 Drupal 检测,并且可以通过登录具有启用模块权限的用户来启用。转到“扩展”页面,搜索“Vonage”,或者滚动到“通信”部分。勾选“Vonage API SDK”旁边的复选框,然后单击“安装”按钮。

步骤 3:配置

您可以通过转到“配置”页面并在“系统”部分下点击“Vonage API 设置”来使用您的应用程序详细信息配置该捆绑包。

然后,您可以从 [Vonage 控制台][dashboard] 中填写所需的凭证。该模块允许您输入您的 Vonage API 密钥和密钥,如果您使用基于应用程序的 API,例如语音 API,还可以输入应用程序 ID 以及用于的私钥。

输入任一凭证集后,您可以使用“Vonage SMS API 测试”或“Vonage Voice API 测试”选项卡测试基本功能。这些选项卡允许您发送测试 SMS 和测试语音通话。

输入凭证后,您可以使用我们 PHP SDK 中的任何 API。

使用

调用 Vonage API

此捆绑包负责创建创建 Vonage 客户端所需的所有客户端,并将其添加到服务容器中。您可以从服务容器中获取该类,或者在其他服务声明中使用它作为服务。

namespace Drupal\my_module\Controller;

use Vonage\Client;
use Vonage\SMS\Message\SMS;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;

class MyController extends ControllerBase
{
    /**
     * @var Client
     */
    protected $client;

    public function __construct($client)
    {
        $this->client = $client;
    }

    public static function create(ContainerInterface $container)
    {
        return new static($container->get(Client::class));
    }

    public function controllerAction(): array
    {
        $this->client->sms()->send(
            new SMS($to, from, $message)
        );

        $build = [
            '#markup' => 'Hello World!',
        ];

        return $build;
    }
}

处理入站 Webhook

许多 Vonage API,特别是 SMS 和语音 API,通过 Webhook 的概念与您的应用程序协同工作。这是 Vonage API 服务器请求您的应用程序,而不是您的应用程序请求 Vonage 。

Vonage API 提供了一种解释入站 Web 请求的方法,并将生成相应的对象。您需要知道哪种类型的请求(SMS 或语音)将发送到特定的路由。

入站 SMS 消息

当您选择让一个号码接收 SMS 时,Vonage 将要求提供发送信息的 URL。您可以在模块中创建一个控制器,其中包含可以接受入站请求的路由,并使用 \Vonage\SMS\Webhook\Factory 将该请求转换为对象。

namespace Drupal\my_module\Controller;

use Vonage\SMS\Webhook\Factory;
use Vonage\SMS\Webhook\InboundSMS;
use Drupal\Core\Controller\ControllerBase;

class MyController extends ControllerBase
{
    public function incomingSMS(): array
    {
        /** @var InboundSMS $inboundSMS */
        $inboundSMS = Factory::createFromGlobals();

        $to = $inboundSMS->getTo();
        $from = $inboundSMS->getFrom();
        $text = $inboundSMS->getText();

        // ...
    }
}

入站语音通话

如果您正在构建交互式语音应用程序,您可以在 Vonage 控制台的应用程序设置中设置一个 Answer Webhook。您可以在模块中创建一个控制器,其中包含可以接受入站通话的路由,并使用 \Vonage\Voice\Webhook\Factory 将该请求转换为对象。

namespace Drupal\my_module\Controller;

use Vonage\Voice\Webhook\Factory;
use Vonage\Voice\Webhook\Answer;
use Drupal\Core\Controller\ControllerBase;

class MyController extends ControllerBase
{
    public function answerCall(): array
    {
        /** @var Answer $inboundCall */
        $inboundCall = Factory::createFromGlobals();

        $to = $inboundCall->getTo();
        $from = $inboundCall->getFrom();
        $uuid = $inboundCall->getUuid();

        // ...
    }
}

入站语音事件

除了能够接听电话外,语音API主要依赖于事件驱动。你可以在Vonage仪表板的应用设置中设置事件Webhook,除了接听Webhook之外。你可以在你的模块中创建一个控制器,其中包含一个可以接受事件的路由,并使用\Vonage\Voice\Webhook\Factory将那个请求转换为对象。

在处理对象时,你需要检查生成的对象类型,因为有许多不同的事件类型,它们都有自己的对象结构。

你可以在https://github.com/Vonage/vonage-php-sdk-core/tree/master/src/Voice/Webhook查看所有可用的事件类型。

namespace Drupal\my_module\Controller;

use Vonage\Voice\Webhook\Factory;
use Vonage\Voice\Webhook\Answer;
use Vonage\Voice\Webhook\Event;
use Drupal\Core\Controller\ControllerBase;

class MyController extends ControllerBase
{
    public function voiceEventHandler(): array
    {
        $event = Factory::createFromGlobals();

        if ($event instanceof Event) {
            // ...
        } elseif ($event instanceof Notification) {
            // ...
        }

        // ...
    }
}

贡献

这个库正在积极开发中,我们很高兴听取您的反馈!请随时创建一个问题提交一个pull request,包括您的问题、评论、建议和反馈。