Laravel Queue Как получить данные в методе задания

Я создал последовательность сообщений для отправки в текстовых сообщениях через Twilio.

Я создал контроллер для помещения сообщений в очередь с данными, полученными в запросе на публикацию. Вот мой контроллер для создания очереди:

public function make_queue(Request $request)
    {
        $data = array(
            'phone' => $request->input('phone'),
            'message'=> $request->input('message'),
            'token'=> $request->input('token')',
            'sid'=> $request->input('sid')
        );

        ProcessMessages::dispatch($data)
        ->delay(now()->addSeconds(15));

        return 'message will be sent';
    }

И в ручке работы, в функции ручки

public function handle()
{
   $token = should_come_from job;
   $sid = should_come_from job;
   $ids = should_come_from job;
   $msg = should_come_from job;
   try{
        //send message
      }
   catch (exception $e)
          {
             handle exception
          }
      }

Я не могу понять, как мне получить значения в функции дескриптора для фактической отправки сообщения....

1 ответ

Решение

Вам нужно добавить метод конструктора в ваш класс обработчика заданий (ProcessMessages), например:

// namespace and use statements...

class ProcessMessages implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $data;

    public function __construct(array $data)
    {
        $this->data = $data;
    }

    public function handle()
    {
        $token = $this->data['token'];
        // ...
    }
}

После того, как вы написали свой класс задания, вы можете отправить его, используя метод отправки самого задания. Аргументы, переданные методу диспетчеризации, будут переданы конструктору задания. Читайте о рассылке вакансий.

Другие вопросы по тегам