点击发送短信API Laravel

mjqavswn  于 2023-01-18  发布在  其他
关注(0)|答案(4)|浏览(122)

我正在尝试使用这个API,但是遇到了第一个障碍。在线聊天的人不知道,并且已经离开了它,有人会给我发电子邮件。我只是在按照www.example.com上给出的继续操作之前尝试实现这个示例https://developers.clicksend.com/docs/rest/v3/?php#reseller-transfer-credit
所以我使用composer来获取包:
编辑器需要点击发送/点击发送-php;
我希望在Laravel类(BaseComms)中使用它,因此实现了该方法

public static function sms_send($to, $msgbody) {
    $smsuname = Config("app.api_sms_username");
    $smspword = Config("app.api_sms_username");
    $config = ClickSend\Configuration::getDefaultConfiguration()->setUsername($smsuname)->setPassword($smspword);
    $apiInstance = new ClickSend\Api\SMSApi(new GuzzleHttp\Client(), $config);
    $msg = new \ClickSend\Model\SmsMessage();
    $msg->setBody("test body");
    $msg->setTo("********");
    $msg->setSource("sdk");
    $sms_messages = new \ClickSend\Model\SmsMessageCollection();
    $sms_messages->setMessages([$msg]);
    try {
      $result = $apiInstance->smsSendPost($sms_messages);
      print_r($result);
    } catch (Exception $e) {
      echo 'Exception when calling SMSApi->smsSendPost: ', $e->getMessage(), PHP_EOL;
    }
  }

待调用

BaseComms::send_sms(0123456789,"test");

但是,我得到**Class '\ClickSend\Configuration'**未找到错误。我知道我需要指定要使用的名称空间,但不确定这是什么,例如

use Illuminate\Database\Eloquent\Model;

根据建议,我已将此行更改为

$config = \ClickSend\Configuration::getDefaultConfiguration()->setUsername($smsuname)->setPassword($smspword);

但是,我现在得到错误
未找到类“单击发送\配置”
今天更新,ClickSend正在指责composer(我已经在他们的指导下重新安装,给予了完全相同的错误)。所以我已经尝试按照他们的API使用CURL。

public static function sms_send($to, $msgbody) {
    $smsapiuname = Config("app.api_sms_username");
    $smsapikey = Config("app.api_sms_key");
    $sms = [
    "messages" => [
        "to" => "0736*****a mobile number ****",
        "source" => "sdk",
        "body" => "test message"
    ]
    ];
    $authheader = ['Authorization: Basic ' . base64_encode("$smsapiuname:$smsapikey")];
    CURL::send("https://rest.clicksend.com/v3/sms/send", $sms, $authheader);
  }

然后在CURL类中

public static function send($url, $curldata, $httpheader = null) {
    $curlinstance = curl_init();
    $datastring = http_build_query($curldata);
    if ($httpheader) {
      curl_setopt($curlinstance, CURLOPT_HTTPHEADER, $httpheader);
    }
    curl_setopt($curlinstance, CURLOPT_URL, $url);
    curl_setopt($curlinstance, CURLOPT_POST, true);
    curl_setopt($curlinstance, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curlinstance, CURLOPT_POSTFIELDS, $datastring);
    $result = curl_exec($curlinstance);
  }

但是$result的值为

{"http_code":400,"response_code":"BAD_REQUEST","response_msg":"The messages array is empty.","data":null}
vnzz0bqm

vnzz0bqm1#

我已经得到了这个工作在laravel与以下:在控制器顶部添加以下“use”

use GuzzleHttp\Exception\GuzzleException;
    use GuzzleHttp\Client;
    use ClickSend\Configuration;
    use ClickSend\Api\SMSApi;

然后在函数中输入以下内容(作为示例):

$config = Configuration::getDefaultConfiguration()
          ->setUsername('USERNAME')
          ->setPassword('API_KEY');

    $apiInstance = new SMSApi(new Client(),$config);
    $q = "sms/inbound"; // string | Your keyword or query.
    $page = 1; // int | Page number
    $limit = 10; // int | Number of records per page

    try {
        $result = $apiInstance->smsInboundGet($q, $page, $limit);
        print_r($result);
    } catch (Exception $e) {
        echo 'Exception when calling SMSApi->smsInboundGet: ', $e->getMessage(),    PHP_EOL;
    }
mmvthczy

mmvthczy2#

通过composer安装后,我在我的控制器顶部添加了use ClickSend;
我还将new GuzzleHttp\Client()调用调整为new \GuzzleHttp\Client()(在前面添加一个“\”)
这就是我所要做的让它在我这边工作。

55ooxyrt

55ooxyrt3#

供应商ClickSend似乎有非常蹩脚的支持,没有功能代码和示例。
所以我调查了Twilio(其他供应商可用!!)。
更便宜,而且支持实际上是示范性的。支持指南实际上在大约10分钟内得到了我想要的作为演示,完全像示例代码所说的那样。

composer require twilio/sdk;

那么
https://www.twilio.com/docs/sms/quickstart/php#install-php-and-the-twilio-php-helper-library
绝对没有错的 composer 作为点击发送试图作为借口。

t2a7ltrp

t2a7ltrp4#

对我来说,这是因为/vendor的导入路径是错误的(__DIR__对我来说不正确)。
对我来说,实际上

require_once('../../../vendor/autoload.php');

相关问题