我正在尝试使用PHP在服务器上建立自己的短信网关我已经安装了Gammu,并且很好地配置了权限和设置。现在它使用以下原型脚本发送SMS fine:

<?php
$text = $_POST['text'];
$numb = $_POST['numb'];
if ($text != '' && $numb != ''){
  //die('echo "'.$text.'" | gammu --sendsms TEXT '.$numb);
  echo "<pre>";
  //die(passthru('whoami'));
  $command = 'echo "'.$text.'" | gammu --sendsms TEXT '.$numb.' >> '.__DIR__.'/smslog.txt';//.'" | gammu --sendsms TEXT '.$numb;

  echo passthru($command);
  //echo $command;
}
else{
  ?>
  <form method="POST">
  <input type="text" name="numb">
  <textarea name="text"></textarea>
  <input type="submit">
  </form>
  <?php
}
?>

不过,英文(拉丁语)短信一切正常,但尝试发送阿拉伯文短信未能送达目的地,尽管运营商回复OK,
Sending SMS 1/1....waiting for network answer..OK, message reference=18

另外,我注意到,在终端上,对阿拉伯语文本使用相同的gammu命令,效果很好,但文本表示方式?? ??????? ???。我,部分地,相信这是编码问题,但我不知道如何解决它。
我的服务器是Ubuntu Linux 16.04。
更新:
我已经知道如何使用gammu命令从bash发送阿拉伯语文本,如下所示,其中使用-unicode选项:
gammu sendsms TEXT 022222222 -unicode -text "نص عربي"

然而,上面提到的脚本发送了阿拉伯语消息,但在电话上看起来有点像333333333。我不知道
当字符串通过发送到命令流时发生
passthru我也试着使用了exec同样的结果。

最佳答案

最后,在多次阅读this section of documentation并尝试之后,我发现正确的命令选项如下:

gammu -c /etc/gammurc sendsms  TEXT 02222000 -unicode -textutf8 "نص عربي"

在上面的示例中,使用-textutf8而不是-text。另外,请注意,可以选择提供-c配置文件路径,以确保将要使用的设备。

关于php - 没有提供使用PHP的阿拉伯文Gammu SMS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51048762/

10-10 17:55
查看更多