onuraycicek / laravel-whatsapp-cloud-api
这是我的laravel-whatsapp-cloud-api包
0.0.6
2024-06-27 23:35 UTC
Requires
- php: ^8.0|^8.1|^8.2
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
简介
此包旨在方便与WCA API交互,提供处理业务资料、上传和发送媒体以及管理电话号码的功能。您可以通过在example文件夹中运行laravel项目来查看演示应用程序。
安装
要安装WCA包,请使用以下composer命令
composer require onuraycicek/laravel-whatsapp-cloud-api
配置
在使用包之前,请确保您已经在.env文件中设置了以下环境变量
WCA_BUSINESS_ID=your_business_id WCA_ACCESS_TOKEN=your_whatsapp_access_token //optional WCA_FROM_PHONE_NUMBER_ID=your_from_phone_number_id WCA_TARGET_PHONE_NUMBER=your_target_phone_number DEFAULT_GRAPH_VERSION=v19.0
用法
业务资料
要检索业务资料信息
try { $wca = new WCA\WCA\WCA([ 'from_phone_number_id' => $request->from_phone_number_id ?? env('WCA_FROM_PHONE_NUMBER_ID'), 'business_id' => env('WCA_BUSINESS_ID'), ]); $response = $wca->businessProfile("about,address,description,email,profile_picture_url,websites,vertical"); $data = $response->decodedBody()["data"][0]; } catch (\Throwable $th) { if (json_decode($th->getMessage())) { return json_decode($th->getMessage())->error->message; } return $th->getMessage(); }
上传和发送媒体
要上传和发送媒体
try { $wca = new WCA\WCA\WCA([ 'from_phone_number_id' => $request->from_phone_number_id ?? env('WCA_FROM_PHONE_NUMBER_ID'), 'business_id' => env('WCA_BUSINESS_ID'), ]); if ($request->has("file")) { $uploadedFiles = []; //upload foreach ($request->file as $file) { // save file temporarily random name $randomName = Str::random(10); $tempName = $randomName . '.' . $file->getClientOriginalExtension(); $file->storeAs('temp', $tempName); $response = $wca->uploadMedia( storage_path('app/temp/' . $tempName) ); $id = $response->decodedBody()["id"]; $uploadedFiles[] = [ "id" => new MediaObjectID($id), "name" => $file->getClientOriginalName(), "temp_name" => $tempName, ]; } // send foreach ($uploadedFiles as $key => $file) { $caption = $key == 0 ? $request->message : null; // send caption only first file $response = $wca->sendDocument( to: $request->to_phone_number ?? env("WCA_TARGET_PHONE_NUMBER"), document_id: $file["id"], name: $file["name"], caption: $caption ); } // remove temporary files foreach ($uploadedFiles as $file) { unlink(storage_path('app/temp/' . $file["temp_name"])); } return $response->body(); } else { $response = $wca->sendTextMessage( to: $request->to_phone_number ?? env("WCA_TARGET_PHONE_NUMBER"), text: $request->message ); } return $response->body(); } catch (\Throwable $th) { if (method_exists($th, 'getMessage') && json_decode($th->getMessage())) { return json_decode($th->getMessage())->error->message; } return $th; }
检索业务电话号码
要检索业务电话号码
try { $wca = new WCA\WCA\WCA([ 'from_phone_number_id' => env('WCA_FROM_PHONE_NUMBER_ID'), 'business_id' => env('WCA_BUSINESS_ID'), ]); $response = $wca->getBusinessPhoneNumbers(); $data = $response->decodedBody()["data"]; } catch (\Throwable $th) { if (json_decode($th->getMessage())) { return json_decode($th->getMessage())->error->message; } return $th->getMessage(); }
错误处理
该包包含错误处理功能,当发生异常时捕获并返回有意义的消息。当发生错误时,如果消息是JSON对象,则解码并返回;否则,返回原始消息。