webard/nova-zadarma

Zadarma VoIP集成到Laravel Nova。直接从您的Nova界面拨打电话和接听电话。

v2.1.0 2024-09-24 19:43 UTC

This package is auto-updated.

Last update: 2024-09-24 19:43:37 UTC


README

描述

本软件包提供Laravel Nova与Zadarma VoIP服务的集成。它允许您直接从您的Nova界面拨打电话、接听和管理电话!

Zadarma SIP User

Zadarma SIP Phone Call

安装

步骤 1: 安装软件包

运行以下命令以安装软件包

composer require webard/nova-zadarma

步骤 2: 发布配置

使用以下命令发布软件包配置

php artisan vendor:publish --provider="Webard\NovaZadarma\NovaZadarmaServiceProvider" --tag=config

步骤 3: 提供Zadarma的API密钥

将以下行添加到.env文件并填写它们

ZADARMA_KEY=
ZADARMA_SECRET=
ZADARMA_SIP_LOGIN=

您可以在设置 -> 集成和API -> 密钥和API中找到Zadarma密钥和密钥

Zadarma API Keys

Zadarma SIP登录是PBX号码的末尾,可以在我的PBX -> 分机下找到。

您的SIP登录在画线字段后面。

Zadarma SIP Login

步骤 4: 发布迁移

使用以下命令发布软件包迁移

php artisan vendor:publish --provider="Webard\NovaZadarma\NovaZadarmaServiceProvider" --tag=migrations

步骤 5: 在NovaServiceProvider中注册工具

use Webard\NovaZadarma\NovaZadarmaTool;

public function tools()
{
    return [
        ...
        NovaZadarmaTool::make(),
    ];
}

步骤 6: 更新用户模型

  1. HasPhoneCalls特质添加到用户模型
  2. zadarma_sipphone_number添加到$fillable属性
  3. phone_number字段转换为 E164PhoneNumberCast::class
use Propaganistas\LaravelPhone\Casts\E164PhoneNumberCast;
use Webard\NovaZadarma\Traits\HasPhoneCalls;

class User extends Authenticatable {
    use HasPhoneCalls;

    protected $fillable = [
        ...
        'zadarma_sip',
        'phone_number'
    ];

     protected function casts(): array
    {
        return [
            ...
            'phone_number' => E164PhoneNumberCast::class,
        ];
    }
}

步骤 7: 修改用户资源

  1. 添加Zadarma SIP字段
  2. 添加电话号码字段
  3. 添加UserPhoneCalls字段
use Webard\NovaZadarma\Nova\Fields\UserPhoneCalls;

class User extends Resource {
    public function fields(NovaRequest $request)
    {
        return [
            ...
            Text::make(__('Zadarma SIP'), 'zadarma_sip')
                ->sortable()
                ->nullable()
                ->rules('nullable', 'max:4'),

            Text::make(__('Phone Number'), 'phone_number')
                ->sortable()
                ->rules('nullable', 'max:20', 'phone'),

            UserPhoneCalls::make(),
        ];
    }
}

步骤 8: 将电话呼叫操作添加到用户资源

MakePhoneCall操作添加到用户资源

use Webard\NovaZadarma\Nova\Actions\MakePhoneCall;

class User extends Resource {
    public function actions(NovaRequest $request)
    {
        return [
            ...
            MakePhoneCall::make()
                ->sole()
        ];
    }
}

警告

MakePhoneCall操作必须是唯一的,因为用户一次只能给一个用户打电话。

技巧

您可以将->withoutConfirmation()方法添加到操作中,以允许在单击操作后直接进行电话呼叫。

步骤 9: 在Nova用户个人资料中填写SIP号码

转到您的用户编辑表单并填写Zadarma SIP,根据Zadarma面板中的SIP号码进行填写。默认创建的SIP号码是100

Zadarma SIP User

Webhooks

步骤 1: 在集成中启用"通知"

转到Zadarma面板中的设置 -> 集成和API -> 集成并启用"通知"集成。

Zadarma Integrations

步骤 2: 填写"通知"集成的设置

转到通知设置并输入webhook URL

https://YOUR-DOMAIN.com/nova-vendor/webard/nova-zadarma/webhook

并启用复选框

  • NOTIFY_START
  • NOTIFY_END
  • NOTIFY_OUT_START
  • NOTIFY_OUT_END
  • NOTIFY_RECORD

Zadarma Notifications Settings

步骤 3: 添加要忽略的webhook URL

转到bootstrap/app.php文件并修改withMiddleware方法

return Application::configure(basePath: dirname(__DIR__))
    ->withMiddleware(function (Middleware $middleware) {

        $middleware->validateCsrfTokens(except: [
            '/nova-vendor/webard/nova-zadarma/webhook',
        ]);
        
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })
    ->create();

如果您已安装fruitcake/laravel-telescope-toolbar,请将webhook URL添加到config/telescope-toolbar.php中的ignore_paths

'ignore-paths' => [
    'nova-vendor/webard/nova-zadarma/webhook'
]

待办事项

我正在积极寻求贡献以增强此软件包。以下是我希望看到实现的一些功能

  • 门的文档
  • 事件的文档
  • 能够离线(根据需要禁用小部件)
  • 更多头部图标选项
  • 带有自定义字段的呼叫后操作模态(反馈模态)
  • 使用OpenAI/Google语音转文本/Assembly.ai的电话呼叫转录

贡献

我们欢迎贡献以改进此插件!请按照以下步骤进行贡献

  1. 分支仓库。
  2. 为您的功能或错误修复创建一个新的分支。
  3. 进行更改并使用描述性消息提交它们。
  4. 将您的更改推送到您分支的仓库。
  5. 向主仓库打开拉取请求。

许可证

本项目采用MIT许可协议。更多详细信息,请参阅LICENSE.md文件。

联系方式

如有疑问或需要支持,请于GitHub上创建一个问题。