public function fire($job, $outbound_id) { $outbound = Outbound::findOrFail($outbound_id); $nexmo = new NexmoAccount(Cache::get('NEXMO_KEY', getenv('NEXMO_KEY')), Cache::get('NEXMO_SECRET', getenv('NEXMO_SECRET'))); $response = $nexmo->sendMessage($outbound->from, $outbound->to, $outbound->text, array('status-report-req' => 1, 'client-ref' => $outbound_id)); $isSent = true; if ($response['message-count'] > 0) { foreach ($response['messages'] as $message) { $outbound_chunk = new OutboundChunk(); $outbound_chunk->outbound_id = $outbound_id; $outbound_chunk->message_id = $message['message-id']; $outbound_chunk->status_code = $message['status']; $outbound_chunk->price = $message['message-price']; $outbound_chunk->save(); // update balance Pusherer::trigger('boom', 'update_balance', $message['remaining-balance']); if ($message['status'] > 0) { $isSent = false; } } } // update status outbound if ($isSent) { $outbound->status = 'sent'; $outbound->save(); } $job->delete(); }
protected function processMessages($wa) { $outbounds = Outbound::whatsapp($this->argument('number'))->queued()->get(); foreach ($outbounds as $outbound) { $to = $outbound->to; // todo // add or update wa-contact // $wa->sendPresenceSubscription($to); $wa->sendMessageComposing($to); $wa->sendMessagePaused($to); $message_id = $wa->sendMessage($to, $outbound->text); $outbound_chunk = new OutboundChunk(); $outbound_chunk->outbound_id = $outbound->id; $outbound_chunk->message_id = $message_id; $outbound_chunk->status_code = 0; $outbound_chunk->price = 0.0; $outbound_chunk->save(); $outbound->status = 'sent'; $outbound->save(); $wa->pollMessage(); } }