Advertisement
kamil321

Untitled

Nov 27th, 2024
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. public function addTextMessagePostFunction(Request $request) {
  2. try {
  3. $numbers = $request['phone_number'];
  4. $isGroup = $request->has('is_group') && $request['is_group'] === 'on';
  5. $type = 'Text Message';
  6.  
  7. $device = Device::select('name')->where('id', $request['device'])->first();
  8.  
  9. if (!$device) {
  10. return redirect()->back()->with('error', 'Device not found.');
  11. }
  12.  
  13. // Prepare message body
  14. $body = ['text' => $request['message']];
  15.  
  16. $data = []; // Initialize array for bulk data
  17.  
  18. // Iterate over numbers to prepare bulk data
  19. foreach ($numbers as $number) {
  20. $format_number = $this->formatNumberForBulk($number, $isGroup);
  21. $jid = $this->generateJid($format_number, $isGroup);
  22.  
  23. $data[] = [
  24. 'jid' => $jid,
  25. 'type' => $isGroup ? 'group' : 'number',
  26. 'delay' => 5000,
  27. 'message' => $body,
  28. 'is_group' => $isGroup ? 1 : 0 // Set is_group to 1 if it's a group
  29. ];
  30. }
  31.  
  32. $response = null;
  33.  
  34. // Check if it's a single or bulk number
  35. if (count($numbers) == 1) {
  36. $format_number = $this->formatNumberForBulk($numbers[0], $isGroup);
  37. $jid = $this->generateJid($format_number, $isGroup);
  38.  
  39. $response = Http::withHeaders([
  40. 'Content-Type' => 'application/json'
  41. ])->post(
  42. env('URL_WA_SERVER') . '/messages/send',
  43. [
  44. 'jid' => $jid,
  45. 'type' => $isGroup ? 'group' : 'number',
  46. 'message' => $body,
  47. 'is_group' => $isGroup ? 1 : 0 // Set is_group to 1 if it's a group
  48. ]
  49. );
  50. // Save to outbox if single message
  51. $this->saveToOutbox($format_number, $request['message'], $response, $request['device'], $type, $isGroup ? $this->getGroupSubject($device->name, $jid) : $format_number, $isGroup);
  52. } else {
  53. // For bulk messages
  54. $response = Http::withHeaders([
  55. 'Content-Type' => 'application/json'
  56. ])->post(
  57. env('URL_WA_SERVER') . '/' . $device->name . '/messages/send/bulk',
  58. $data
  59. );
  60.  
  61. // Save each message in the bulk to outbox
  62. foreach ($data as $item) {
  63. $this->saveToOutbox($item['jid'], $request['message'], $response, $request['device'], $item['type'], $isGroup ? $this->getGroupSubject($device->name, $item['jid']) : $item['jid'], $isGroup);
  64. }
  65. }
  66.  
  67. if ($response->failed()) {
  68. throw new Exception('Request failed with status: ' . $response->status());
  69. }
  70.  
  71. $res = json_decode($response->getBody());
  72. $status = property_exists($res, 'error') ? $res->error : (property_exists($res, 'status') ? $res->status : 'UNKNOWN');
  73. return redirect()->route('message.send-message.index')->with('success', $status);
  74.  
  75. } catch (Exception $e) {
  76. dd($e);
  77. return redirect()->back()->with('error', 'Failed to send message: ' . $e->getMessage());
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement