大家好,我的代码有问题,我尝试将nexmo文本发送到数据库中的所有数字。发送时,我的浏览器中出现此错误“数组到字符串转换”,并且错误显示此行“ CURLOPT_POSTFIELDS => $ postData“如果有人可以帮助我。”
我试图做一个dd('$ message')和dd('$ options'),但我得到的字段值很好,但是在发送时总是有相同的错误。我试图看到该方法爆破(),但没有成功。
public function sendMsg(Request $request)
{
$message = $request->input('message');
$options = $request->input('telephone');
$encodeMessage = urlencode($message);
$authkey = '********';
$senderId = '******************';
$route = 4;
$postData = $request->all();
$mobileNumber = implode(" ", $postData['telephone']);
$arr = str_split($mobileNumber, '12');
$mobiles = implode(", ", $arr);
$data = array(
'authkey' => $authkey,
'mobiles' => $mobiles,
'message' => $encodeMessage,
'sender' => $senderId,
'route' => $route
);
$url = "https://rest.nexmo.com/sms/json";
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData
));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYpeer, 0);
$output = curl_exec($ch);
if (curl_errno($ch)) {
echo 'error:' . curl_errno($ch);
}
curl_close($ch);
return redirect('/create');
}
答案 0 :(得分:0)
要将自定义短信通知发送给所有用户,可以使用Laravel的内置通知系统。
您需要开始使用的所有信息都在Laravel网站的Documentation中。
要开始使用,您需要:
下载nexmo作曲家软件包:
composer require nexmo/client
将配置nexmo配置添加到config/services.php
文件:
'nexmo' => [
'key' => env('NEXMO_KEY'),
'secret' => env('NEXMO_SECRET'),
'sms_from' => 'your-nexmo-phone-number',
],
NB 请仅更改上面代码中的"your-nexmo-phone-number"
部分。请勿不将上面的NEXMO_KEY
和NEXMO_SECRET
替换为您的实际密钥和秘密,因为它们将存储在.env
中,并将值传递给env()
助手功能需要与.env
中的键匹配。
sms_from 选项是发送SMS消息的电话号码。您应该在Nexmo控制面板中为您的应用程序生成一个电话号码。
将您的nexmo api密钥和nexmo机密添加到您的.env
文件中:
NEXMO_KEY=your-nexmo-api-key
NEXMO_SECRET=nexmo-secret
您现在应该设置为使用nexmo发送短信。
下一步,请确保您的User
模型已设置为发送通知
为此,请确保是否使用了Illuminate\Notifications\Notifiable
特征,例如
use Illuminate\Notifications\Notifiable; // <--This bit
...
class User extends Authenticatable
{
use Notifiable; // <-- and this bit
...
然后将以下内容也添加到您的User
模型中:
public function routeNotificationForNexmo($notification)
{
return $this->phone;
}
这将使通知系统知道要为用户使用的电话号码。
最后,创建一个新的通知类
php artisan make:notification CustomSmsNotification
转到课程(app/Notifications/CustomSmsNotification.php
)并将其更改为以下内容:
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\NexmoMessage;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
class CustomSmsNotification extends Notification
{
use Queueable;
/**
* The message to send.
*
* @var string
*/
public $message;
/**
* Create a new notification instance.
*
* @param $message
*/
public function __construct($message)
{
$this->message = $message;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['nexmo'];
}
/**
* Get the Nexmo / SMS representation of the notification.
*
* @param mixed $notifiable
* @return NexmoMessage
*/
public function toNexmo($notifiable)
{
return (new NexmoMessage)->content($this->message);
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
您的控制器方法类似于:
public function sendMsg(Request $request)
{
\Notification::send(User::all(), new CustomSmsNotification($request->input('message')));
}