webard / nova-zadarma
Zadarma VoIP集成到Laravel Nova。直接从您的Nova界面拨打电话和接听电话。
Requires
- php: ^7.4|^8.0
- illuminate/support: ^10.0|^11.0
- laravel/nova: ^4.20
- nova-kit/nova-packages-tool: ^1.0
- propaganistas/laravel-phone: ^5.0
- zadarma/user-api-v1: ^1.1
Requires (Dev)
- laravel/pint: ^1.0
README
描述
本软件包提供Laravel Nova与Zadarma VoIP服务的集成。它允许您直接从您的Nova界面拨打电话、接听和管理电话!
安装
步骤 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 SIP登录是PBX号码的末尾,可以在我的PBX -> 分机下找到。
您的SIP登录在画线字段后面。
步骤 4: 发布迁移
使用以下命令发布软件包迁移
php artisan vendor:publish --provider="Webard\NovaZadarma\NovaZadarmaServiceProvider" --tag=migrations
步骤 5: 在NovaServiceProvider
中注册工具
use Webard\NovaZadarma\NovaZadarmaTool; public function tools() { return [ ... NovaZadarmaTool::make(), ]; }
步骤 6: 更新用户模型
- 将
HasPhoneCalls
特质添加到用户模型 - 将
zadarma_sip
和phone_number
添加到$fillable
属性 - 将
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: 修改用户资源
- 添加
Zadarma SIP
字段 - 添加
电话号码
字段 - 添加
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
Webhooks
步骤 1: 在集成中启用"通知"
转到Zadarma面板中的设置 -> 集成和API -> 集成并启用"通知"集成。
步骤 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
步骤 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的电话呼叫转录
贡献
我们欢迎贡献以改进此插件!请按照以下步骤进行贡献
- 分支仓库。
- 为您的功能或错误修复创建一个新的分支。
- 进行更改并使用描述性消息提交它们。
- 将您的更改推送到您分支的仓库。
- 向主仓库打开拉取请求。
许可证
本项目采用MIT许可协议。更多详细信息,请参阅LICENSE.md文件。
联系方式
如有疑问或需要支持,请于GitHub上创建一个问题。