Linux — Gammu SMS на арабском языке с использованием PHP не доставляется

Я пытаюсь иметь свой собственный 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
}
?>

Тем не менее, все работает нормально с текстовыми сообщениями на английском (латинском) SMS, но попытка отправить арабское SMS не удалось доставить к месту назначения, несмотря на то, что оператор ответил 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 также и тот же результат.

0

Решение

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]