diff --git a/src/Facades/WhatsApp.php b/src/Facades/WhatsApp.php new file mode 100644 index 0000000..1189eca --- /dev/null +++ b/src/Facades/WhatsApp.php @@ -0,0 +1,15 @@ +app->bind('WhatsApp', function () { + return new WhatsApp(); + }); + } +} diff --git a/src/WhatsApp.php b/src/WhatsApp.php new file mode 100644 index 0000000..28593f8 --- /dev/null +++ b/src/WhatsApp.php @@ -0,0 +1,84 @@ +getAccountNumbers($WhatsAppBussnessAccountId, $accessToken); + + // Throw an exception if a client or server error occurred... + if (isset($response['error'])) { + return $response; + } + $fromPhoneNumberId = $response['data'][0]['id']; // First phone number + + if (!empty($from)) { + foreach ($response['data'] as $value) { + if (str_replace(array('+', '-', ' ', ')', '('), '', $value['display_phone_number']) == $from) { + $fromPhoneNumberId = $value['id']; + } + } + } + + $postInput = [ + 'messaging_product' => 'whatsapp', + 'to' => $to, + 'type' => 'template', + 'template' => [ + 'name' => $templateName, + 'language' => [ + 'code' => $languageCode, + ], + 'components' => [ + [ + 'type' => 'body', + 'parameters' => $this->getParametersData($message) + ], + ], + ], + ]; + $headers = [ + 'Authorization' => 'Bearer ' . $accessToken, + ]; + $response = Http::withHeaders($headers)->post('https://graph.facebook.com/v12.0/' . $fromPhoneNumberId . '/messages', $postInput); + $response = json_decode($response->getBody(), true); + return $response; + } + + /* + * @return array|mixed + */ + private function getAccountNumbers($WhatsAppBussnessAccountId, $accessToken) + { + $response = Http::get('https://graph.facebook.com/v14.0/' . $WhatsAppBussnessAccountId . '/phone_numbers?access_token=' . $accessToken); + return json_decode($response->getBody(), true); + } + + /** + * @param string $message + * + * @return array|mixed + */ + private function getParametersData($message) + { + $parameter = explode("~", $message); + $parameters = []; + foreach ($parameter as $value) { + array_push( + $parameters, + [ + 'type' => 'text', + 'text' => $value + ] + ); + } + return $parameters; + } +} diff --git a/src/WhatsAppInterface.php b/src/WhatsAppInterface.php new file mode 100644 index 0000000..ed645e1 --- /dev/null +++ b/src/WhatsAppInterface.php @@ -0,0 +1,13 @@ +