/** * @param TelephoneNo $fromNo * @param Receiver $receiver * @param string $callbackUrl */ public function calling(TelephoneNo $fromNo, Receiver $receiver, $callbackUrl) { $this->twilio->account->calls->create($fromNo->getFullTelNo(), $receiver->getTelNo()->getFullTelNo(), $callbackUrl); }
$receivers = collect($receivers); } $fromNo = new TelephoneNo(env('TWILIO_TEL_NO')); $url = url('/twilio/calling/response'); $receivers->each(function (Receiver $receiver) use($service, $fromNo, $url, $logger) { $service->calling($fromNo, $receiver, $url); $logger->info('電話をかけた', ['telNo' => $receiver->getTelNo()->getMaskedTelNo()]); }); return response('ok'); }); $router->post('/calling/response', function () { return response()->view('twilio.response', [], 200, ['Content-type' => 'text/xml']); }); $router->post('/gathering', function (GatheringRequest $request, LoggerInterface $logger) { $pushed = $request->input('Digits'); $telNo = new TelephoneNo($request->input('To')); $logger->info('プッシュフォンを操作', ['telNo' => $telNo->getMaskedTelNo(), 'pushed' => $pushed]); $receiver = new Receiver($telNo, ''); // name is dummy $command = GatherCommandFactory::create($pushed, $receiver); $command->execute($pushed); if ($command->isRetry()) { $template = 'twilio.response'; } else { $template = 'twilio.complete'; } return response()->view($template, [], 200, ['Content-type' => 'text/xml']); }); $router->get('/logs', function (GatheringLogRepository $repository) { return view('twilio.logs', ['logs' => $repository->findAll()]); });
/** * @return string */ public function toJson() { return ['telephoneNo' => $this->telephoneNo->getMaskedTelNo(), 'pushed' => $this->pushed, 'created_at' => $this->created_at]; }