Переслать Twilio SMS с Emojis с использованием PHP - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть PHP-скрипт, который вызывается через веб-крючок Twilio для входящих SMS.Сообщения приходят с почтовыми данными, которые я собираю с помощью:

$Message = $_POST["Body"];

Затем, используя Twilio PHP SDK, это сообщение пересылается обратно на мобильный телефон через:

$relay = new Client($sid, $token);
try {
    $relay->messages->create(
        '+15558675310',
        array(
            'from' => '+15555555555',
            'body' => $Message
        )
    );
}
catch (Exception $e) {
    $TwilioError = "Error: " . $e->getMessage();
}

Простойдостаточно и работает нормально.Проблема в том, что смайлики не переведены должным образом и отправлены искажены.То, что должно быть смайликом, выглядит так: 😠€

В журналах Twilio будет отображаться входящее сообщение со смайликом, но это всего лишь HTML-представление.Журнал не показывает, что такое кодировка (при условии UTF-8).Журнал Twilio для исходящего сообщения говорит, что кодировка UCS2.

Кодировка веб-сервера по умолчанию - UTF-8.

Что необходимо сделать, используя PHP 5.6, с сообщением, поступающим из Twilio, с возможными смайликами в контенте перед отправкой обратно черезTwilio PHP SDK?

1 Ответ

0 голосов
/ 20 декабря 2018

решаемая.Часть моей проблемы заключалась в вызове stripslashes () для $ _REQUEST ['Body'], вероятно, из-за привычки помогать другим гнусным пост-значениям.Таким образом, он удалял байты эмодзи UTF-8.

Как только это было удалено, я смог послать эмодзи.Для хранения смайликов в целях регистрации, использование функции лица, предоставленной @PetrHejda ниже, работает безупречно.

htmlentites не работает для смайликов

...