Гамму СМС на арабском языке с использованием PHP не доставляется - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь установить свой собственный SMS-шлюз на моем сервере, используя PHP. Я установил Gammu и хорошо настроил разрешения и настройки. Теперь он отправляет SMS нормально, используя следующий скрипт-прототип:

<?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.

Обновление:

Я выяснил, как отправить арабский текст из bash с помощью команды gammu, например, в которой используется опция -unicode:

gammu sendsms TEXT 022222222 -unicode -text "نص عربي"

Однако , скрипт, рассмотренный выше, отправляет арабское сообщение, но на телефоне оно выглядит как 333333333. Я понятия не имею о том, что произошло в строке при отправке в поток команд через passthru и я пытался использовать exec также и тот же результат.

1 Ответ

0 голосов
/ 28 июня 2018

Наконец, после прочтения этого раздела документации и множества попыток я обнаружил, что параметры правильной команды выглядят следующим образом:

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

В приведенном выше примере -textutf8 используется вместо -text. Кроме того, обратите внимание, что -c путь к файлу конфигурации предоставляется дополнительно, чтобы просто убедиться, какое устройство будет использоваться.

...