graphClient = new GraphClient(); } public function getUserBusinesses($userAccessToken, $with_assets = false): array { $businesses = $this->graphClient->get('me/businesses', array('limit' => 50, 'fields' => 'id,name'), $userAccessToken); $businesses_data = isset($businesses['data']) ? $businesses['data'] : []; if ($with_assets) { foreach ($businesses_data as $i => $business) { $wabas = $this->getUserWabas($business['id'], $userAccessToken); if (!empty($wabas['data'])) { $businesses_data[$i]['wabas'] = []; foreach ($wabas['data'] as $waba) { $waba['phone_numbers'] = []; $phone_numbers = $this->getPhoneNumbers($waba['id'], $userAccessToken); if (!empty($phone_numbers['data'])) { foreach ($phone_numbers['data'] as $phone_number) { $waba['phone_numbers'][] = $phone_number; } } $businesses_data[$i]['wabas'][] = $waba; } } } } return $businesses_data; } public function getUserWabas($businessId, $userAccessToken): array { $wabas = $this->graphClient->get("{$businessId}/owned_whatsapp_business_accounts", array('limit' => 50, 'fields' => 'id,name'), $userAccessToken); return is_array($wabas) ? $wabas : []; } public function getPhoneNumbers($wabaId, $userAccessToken): array { $phoneNumbers = $this->graphClient->get("{$wabaId}/phone_numbers", array('limit' => 50, 'fields' => 'id,display_phone_number,verified_name'), $userAccessToken); return is_array($phoneNumbers) ? $phoneNumbers : []; } public function assignToApp($businessId, $appId, $userAccessToken): bool { $response = $this->graphClient->post("{$businessId}/applications", array('business_app' => $appId), $userAccessToken, true); if (!$response->isSuccessful()) { return false; } return true; } public function isAssignedToApp($businessId, $appId, $userAccessToken): bool { $response = $this->graphClient->get("{$businessId}/owned_apps", array(), $userAccessToken, true); if (!$response->isSuccessful()) { return false; } $body = $response->getBody(); if (!isset($body['data']) || !is_array($body['data'])) { return false; } foreach ($body['data'] as $app) { if (is_array($app) && isset($app['id']) && is_string($app['id']) && $app['id'] === $appId) { return true; } } return false; } }