. */ namespace App\Libraries; use App\Device; use App\ExternalAccount; use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Log; use stdClass; class FlexisipRedisConnector { public function getDevices(string $from) { $devices = collect(); try { $content = Redis::hgetall('fs:' . $from); foreach ($content as $key => $contact) { $device = new Device; $device->fromRedisContact($contact); $devices->push($device); } } catch (\Throwable $th) { Log::error('Redis server issue: ' . $th->getMessage()); } return $devices->keyBy('uuid'); } public function deleteDevice(string $from, string $uuid) { try { Redis::hdel('fs:' . $from, '"<' . $uuid . '>"'); Redis::publish($from, ''); } catch (\Throwable $th) { Log::error('Redis server issue: ' . $th->getMessage()); } } public function pingB2BUA(ExternalAccount $externalAccount): bool { try { Redis::publish('flexisip/B2BUA/account', json_encode([ 'username' => $externalAccount->username, 'domain' => $externalAccount->domain, 'identifier' => "$externalAccount->id" ])); return true; } catch (\Throwable $th) { Log::error('Redis server issue: ' . $th->getMessage()); } return false; } }