Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function addTextMessagePostFunction(Request $request) {
- try {
- $numbers = $request['phone_number'];
- $isGroup = $request->has('is_group') && $request['is_group'] === 'on';
- $type = 'Text Message';
- $device = Device::select('name')->where('id', $request['device'])->first();
- if (!$device) {
- return redirect()->back()->with('error', 'Device not found.');
- }
- // Prepare message body
- $body = ['text' => $request['message']];
- $data = []; // Initialize array for bulk data
- // Iterate over numbers to prepare bulk data
- foreach ($numbers as $number) {
- $format_number = $this->formatNumberForBulk($number, $isGroup);
- $jid = $this->generateJid($format_number, $isGroup);
- $data[] = [
- 'jid' => $jid,
- 'type' => $isGroup ? 'group' : 'number',
- 'delay' => 5000,
- 'message' => $body,
- 'is_group' => $isGroup ? 1 : 0 // Set is_group to 1 if it's a group
- ];
- }
- $response = null;
- // Check if it's a single or bulk number
- if (count($numbers) == 1) {
- $format_number = $this->formatNumberForBulk($numbers[0], $isGroup);
- $jid = $this->generateJid($format_number, $isGroup);
- $response = Http::withHeaders([
- 'Content-Type' => 'application/json'
- ])->post(
- env('URL_WA_SERVER') . '/messages/send',
- [
- 'jid' => $jid,
- 'type' => $isGroup ? 'group' : 'number',
- 'message' => $body,
- 'is_group' => $isGroup ? 1 : 0 // Set is_group to 1 if it's a group
- ]
- );
- // Save to outbox if single message
- $this->saveToOutbox($format_number, $request['message'], $response, $request['device'], $type, $isGroup ? $this->getGroupSubject($device->name, $jid) : $format_number, $isGroup);
- } else {
- // For bulk messages
- $response = Http::withHeaders([
- 'Content-Type' => 'application/json'
- ])->post(
- env('URL_WA_SERVER') . '/' . $device->name . '/messages/send/bulk',
- $data
- );
- // Save each message in the bulk to outbox
- foreach ($data as $item) {
- $this->saveToOutbox($item['jid'], $request['message'], $response, $request['device'], $item['type'], $isGroup ? $this->getGroupSubject($device->name, $item['jid']) : $item['jid'], $isGroup);
- }
- }
- if ($response->failed()) {
- throw new Exception('Request failed with status: ' . $response->status());
- }
- $res = json_decode($response->getBody());
- $status = property_exists($res, 'error') ? $res->error : (property_exists($res, 'status') ? $res->status : 'UNKNOWN');
- return redirect()->route('message.send-message.index')->with('success', $status);
- } catch (Exception $e) {
- dd($e);
- return redirect()->back()->with('error', 'Failed to send message: ' . $e->getMessage());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement