私は、さまざまな言語を使用して世界中の国々の人々にSMSメッセージを送信しようとしている企業と協力しています。
この企業には、SMPPプロトコルを使用してさまざまな電話会社のSMSCと通信するカスタム作成のアプリケーションがあります。
SMPPPDUをSMSCに送信するために使用するdata_encodingをさまざまな電話会社から通知されました。
現在、7ビットGSM)、Latin-1、およびUCS-2エンコーディングを使用しています。私たちは、各電話会社が使用するように指示したエンコーディングを使用しています。SMPP PDUのペイロードはエンコードされて送信され、それに応じてdata_codingパラメーターが設定されます(GSMの場合は0x00、Latin-1の場合は0x03、UCS-2の場合は0x08)。
質問1:SMPP PDUをSMSCに送信するために使用するエンコードを本当に重要にする必要がありますか?SMSCは、送信されたSMPPエンコーディングからdata_codingパラメータの内容に基づいて適切なエンコーディングに変換できるべきではありませんか?SMPPを介してすべてのメッセージをUCS-2として送信し、data_codingパラメーターを0x08に設定して、TelcoにSMS PDUへの変換を処理させることはできませんか?
現在、ポルトガル語のSMSメッセージを送信したいです。電話会社は、SMPPに「SMSCデフォルトアルファベット」を使用してメッセージを送信するように指示しました。さらに押されて、彼らはこれがGSMデフォルトアルファベットと同じであると言いましたこれはポルトガル語アルファベットがGSMデフォルトアルファベットによって完全に表されていないので心配です。電話会社は単にポルトガル語の文字を英語の文字に音訳しているようです。電話会社は、「SMSCが認識しない特殊文字(たとえば、á、ó、ã)を使用してSMSを送信すると、SMSCはそれらの文字を可能な限り最も近い文字にエンコードする」と通知しました。GSM Default Alphabetはそもそもそのような文字をサポートしていないので、これはやや不可能だと思います。
質問2:特殊文字を送信して、GSMデフォルトアルファベットを使用した場合に認識されないようにするにはどうすればよいですか?GSMデフォルトアルファベットとして送信されたすべての文字は、GSM 03.38標準で定義されている7ビットの128文字のアルファベットに準拠する必要がありますか?
質問3:電話会社が「GSMデフォルトアルファベット」の使用を要求しているので、7ビットパックオクテットとしてエンコードされたSMPPペイロードを送信する必要があります。
このアプリケーションは、テキストをUTF-8として保存します。ポルトガルの電話会社は、GSMデフォルトアルファベットを含むペイロードでSMPPを送信するように要求しているため、UTF-8から7ビットGSMデフォルトアルファベットに変換する必要があると思います。私の現在の戦略では、GSMのデフォルトに相当する(合計128文字)各UTF-8文字を値でマッピングし、他のUTF-8文字を最も近いGSMのデフォルトのアルファベットに変換します。それ以外の場合は疑問符を使用します。
質問4:これはUTF-8からGSMのデフォルトのアルファベットへの変換を処理するための適切な方法ですか?他の多くのアプローチはないようです。問題のアプリケーションは、Unix環境でRubyを使用しています。GSMをサポートする既存のライブラリは利用できないようであるため、カスタムライブラリが唯一のアプローチのようです。
私の研究では、7ビットのみを使用して他の言語をサポートするためのGSMロッキングシフトテーブルの詳細が明らかになりました。ロッキングシフトテーブルは、SMSPDUのUDH部分で指定されます。
質問5:SMPPを介してロッキングシフトテーブルを使用してSMSメッセージを送信するにはどうすればよいですか?SMPP PDUペイロードを変更して、ロッキングシフトテーブルを指定するUDHを含める必要がありますか?data_codingパラメーターは何に設定する必要がありますか?
誰かがこれらの質問のいずれかに権威を持って答えることができれば、私はわくわくします。