
シェア:
KarlはVonageのDeveloper Advocateで、RubyサーバSDKのメンテナンスとコミュニティの開発者エクスペリエンスの向上に注力しています。彼は学ぶこと、ものを作ること、知識を共有すること、そして一般的にウェブ技術に関連することが大好きです。
MMSで何ができるか?
所要時間:1 分
MMSで何ができるか?
最近、このような質問が社内のSlackチャンネルに投稿された。
Slack screenshot
通信チャネルとしてのMMSは、おそらく画像を送信するために最もよく知られており、その初期の頃、MMSはしばしば「画像メッセージング」と呼ばれていました。このブログポストでは、Vonage Messages APIを使ってMMSで画像ファイルを送信する例を見ていきます。その前に、MMSの背景やその他の機能についてもう少し説明したいと思います。
MMSは主に画像の送信に関連しているが、実際には頭文字をとって「Multi Media Service」と呼ばれている。MMSは画像ファイルの送信だけにとどまらず、携帯電話ネットワークを通じてさまざまな種類のファイルを送信できる。
Vonage Messages APIは現在4種類のMMSメッセージをサポートしています:
画像送信をサポート
.jpg,.jpeg,.pngおよび.gifファイルオーディオファイルの送信をサポート
.mp3ファイルビデオファイルの送信をサポート
.mp4ファイルvCard:ファイルの送信をサポート
.vcfファイル
なぜMMSを使うのか?
MMSメッセージングにはさまざまな使用例がある。用途 プロモーションメッセージングMMSは、画像、ビデオ、またはサウンドクリップを使用して製品を宣伝することにより、SMSメッセージングと比較して、余分な次元を追加することができます。また、多くの トランザクション例えば、カスタマーサポートのワークフローの一環としての説明ビデオや、宅配便の配達証明の提供などです。
Vonage Messages APIを使ったMMSメッセージの送信
すでにVonageを使ってSMSメッセージを送っている方も、そうでない方も、Vonageを使ってMMSメッセージを送るのはとても簡単です。 Vonage Messages APIが当社のサーバーSDKに追加されました。.
Messages API は単一のエンドポイントを公開します。 POSTエンドポイントを公開します: https://api.nexmo.com/v1/messagesヘッダー(ここではベアラートークン認証を使うことを推奨する。 Authorizationヘッダ (ここでは Bearer Token 認証を使うことを推奨します) と、以下のような JSON ペイロードを受け取ります:
{
"message_type": "image",
"image": {
"url": "https://example.com/image.jpg"
},
"to": "447700900000",
"from": "447700900001",
"channel": "mms"
}上記の例は、MMSで画像メッセージを送信する際に使用するJSON構造です。
ここで注意すべき点がいくつかあります。 urlプロパティは一般にアクセス可能なURLである必要があります。 toと fromNumbers
番号へ
現在、Messages APIは以下のMMS送信をサポートしています。 アメリカをサポートしています:
AT&T
Tモバイル
ベライゾン
VonageメッセージAPIに提供される toVonage Messages APIに提供される番号は、これらのネットワークのいずれかでMMSを受信できる番号である必要があります。
番号から
この fromNumbersは、以下のいずれかである必要がある。 USSC(USショートコード)である必要があります、 10DLC(10桁ロングコード)、または TFN(フリーダイヤル番号)がMMSで有効で、登録されたキャンペーンにリンクされている。 登録されたキャンペーン.異なるタイプの番号は、異なるMMS機能をサポートしています:
USSC: 画像、Vカード
10DLC: 画像、オーディオ、ビデオ、vCard
TFN:画像、音声、ビデオ
適用例
Vonage Message API を使って MMS メッセージを送信する方法を説明するには、アプリケーションの例を見ながら説明するのが一番です。
MMSで宣伝するような商品はないけれど、大好きなのは xkcdコミックが好きなので Vonage Ruby SDKを使って、xkcdのランダムなコミックを含むMMSメッセージを毎日送信する小さなRubyアプリケーションを作った。もしあなたがRubyistでないなら、私たちの他の サーバーSDKを使うか、Messages APIを直接使って似たようなものを実装することができます。
私のRubyアプリは2つのことをする:
ランダムな xkcd コミックのデータを xkcd API
を使用してコミックをMMSとして送信します。 Vonage Messages APIを使用します。
そして、1日1回設定した時間にアプリケーションを実行するCronジョブを設定した。
依存関係の設定
アプリケーションの最初のタスク--xkcd APIからデータを取得する--のために、私は RubyGemを見つけた。残念なことに、そのRubyGemはデータをどのように返すかという点で、私がこのアプリケーションに求めていたものとは違っていた。 を書くことにした。, get_xkcdを書くことにした。その実装について詳しく知りたい方は ソースコードをGitHubでチェックできる。
私の Gemfileはこんな感じだ:
source "https://rubygems.org"
ruby "3.0"
gem "dotenv"
gem "vonage"
gem "rake"
gem "whenever", require: false
gem "get_xkcd"ここで最も重要な依存関係は vonage gemで、Vonage Messages API経由でMMSを送信するのに使います。
私の get_xkcdを使ってxkcd APIとやりとりしている。この dotenv gemは私のアプリケーションの環境変数を管理するためのものです。この rake gemと whenever gemは、Cron経由で実行するタスクを設定するためのものです。
アプリケーション・ファイル
私は app.rbこのファイルには、xkcdコミックのデータを取得し、そのデータの一部を使ってMMSメッセージを送信するロジックが含まれている。
私のメイン・アプリケーション・ファイルはこんな感じだ:
# app.rb
require 'dotenv'
require 'vonage'
require 'get_xkcd'
Dotenv.load
random_issue_data = GetXkcd::Comic.fetch_random_issue_data
client = Vonage::Client.new(
application_id: ENV['APP_ID'],
private_key: File.read(ENV['PATH_TO_PRIVATE_KEY_PATH'])
)
message = Vonage::Messaging::Message.mms(
type: 'image',
message: {
url: random_issue_data['img'],
caption: random_issue_data['title']
}
)
client.messaging.send(from: ENV['FROM_NUMBER'], to: ENV['TO_NUMBER'], **message)アプリケーションは dotenv, vonageと get_xkcdの宝石が必要です。
require 'dotenv'
require 'vonage'
require 'get_xkcd'必要な環境変数はすべて、プロジェクトのルート・ディレクトリにある .envファイルに定義され、プロジェクトのルート・ディレクトリにある ENVハッシュにロードします。 Dotenv.loadメソッドを使ってハッシュにロードします。
Dotenv.load私のアプリが最初にすべきことは、ランダムにxkcdコミックのデータを取得することだ。私の GetXkcdライブラリは Comicクラスを定義している。そのうちのひとつが fetch_random_issue_dataで、その名前が示すように、xkcdコミックのランダムな号のデータを取得する。
random_issue_data = GetXkcd::Comic.fetch_random_issue_dataアプリはそのリターンを random_issue_data変数に格納します。メソッドの戻り値は、ランダムなxkcdコミックのRuby Hashデータです。 imgキーの値としてコミック画像のURL、そして titleキーの値です。これらの値は、後でMMSメッセージを作成するときに使用されます。
ファイルの残りの部分は app.rbファイルはMMSメッセージの作成と送信を扱う。
クライアント・オブジェクトのインスタンス化
Vonage Messages API を使ってメッセージを送信する最初のステップは、Vonage オブジェクトをインスタンス化することです。 Clientオブジェクトをインスタンス化することです。ここでは2つのキーワード引数を渡します: application_idそして private_key.
client = Vonage::Client.new(
application_id: ENV['APP_ID'],
private_key: File.read(ENV['PATH_TO_PRIVATE_KEY_PATH'])
)この2つの議論が何を表しているのか、不思議に思うかもしれない。
Messages API を使用するには、次のように作成する必要があります。 アプリケーションを作成する必要があります。 開発者ダッシュボードまたは アプリケーションAPIのいずれかを使用して、メッセージ用に有効にします。
Screenshot of the Messages toggle in the Dashboard
作成されたアプリケーションには、固有のアプリケーションIDが付与されます。また、このアプリケーションの秘密鍵を生成し、ダウンロードすることもできます。
Screenshot of the Generate Private Key button in the Dashboard
私の秘密鍵はプロジェクトファイルのルート・ディレクトリに保存されています。私のアプリIDと秘密鍵へのパスは、私の .envファイルに定義されている。
当社のサーバーSDKは、認証やHTTPリクエストヘッダーの生成など、細かい部分にも対応しています。この application_idと private_keyオブジェクトをインスタンス化するときに渡された Clientオブジェクトをインスタンス化するときに渡されたデータは、その後、JWT (JSONウェブトークンヘッダーの値として設定されます。 Authorizationヘッダの値として設定されます。
MMSメッセージオブジェクトのインスタンス化
Vonage Ruby SDK は、各チャネルの特定のメッセージ・オブジェクトを作成するメソッドを提供する Messaging::Messageオブジェクトを定義しています。ここでは mmsメソッドを呼び出すと MMSオブジェクトを返します。
message = Vonage::Messaging::Message.mms(
type: 'image',
message: {
url: random_issue_data['img'],
caption: random_issue_data['title']
}
)ここでは typeに設定する。 image(に設定している(他の MMS typeは audio, videoまたは vcard).ハッシュでは messageハッシュでは urlのURLに imgのURLに設定し、オプションの captionを titleを設定しています。
MMSメッセージの送信
そして、アプリケーションの重要な部分であるMMSメッセージの送信へ!
client.messaging.send(from: ENV['FROM_NUMBER'], to: ENV['TO_NUMBER'], **message)メソッドを呼び出す messagingメソッドを呼び出すと Clientオブジェクトを返します。 Messagingオブジェクトを返します。次に sendメソッド呼び出しをこの返されたオブジェクトに連鎖させます。 fromと to引数と渡された messageオブジェクトを組み合わせ、JSONに変換し、HTTPリクエストのボディとしてMessages APIエンドポイントに送信する。 POSTエンドポイントに HTTP リクエストのボディとして送信します。
の制限に留意すること。 fromと toNumbersの制限に留意すること。
Cronジョブの設定
最後の作業はCronジョブの設定だ。システムの crontabを手動で編集することもできるが、Rubygemには wheneverという本当に便利なRubygemがあるので、それを使えば簡単にできる。この whenevergemはタスクを実行するためのいくつかの異なるオプションを提供する。 bashコマンドの実行や rakeタスクの実行などです。
RakeはRubyのタスクランナーである。Rubyの構文でタスクを定義し、それを rakeコマンドに渡すことで実行できる。タスクは Rakefileで定義されるので、プロジェクト・ディレクトリに追加する必要がある。
# Rakefile
desc "Send a random XKCD comic via MMS"
task :send_xkcd_mms do
ruby 'app.rb'
endここでは、説明 (desc)、タスク名 send_xkcd_mmsそしてタスク自体(ブロック内で定義される do..endブロック内で定義)。 app.rbファイルを実行する。
タスクをスケジュールするには whenever ジェムでタスクをスケジュールするには schedule.rbファイルを configディレクトリにファイルを作成し、そこでスケジュールを定義します。
# schedule.rb
job_type :rake, "cd :path && bundle exec rake :task"
every 1.day, at: '9:00 am' do
rake "send_xkcd_mms"
end
この job_type :rake, "cd :path && bundle exec rake :task"行はタスクの実行方法に関するいくつかのデフォルトを設定します。タスク自身はRubyの構文を使って間隔(every 1.day)、特定の時間(at: '9:00 am')、そしてスケジュールしたいタスクを do..endブロック(rake "send_xkcd_mms").
このスケジュールで crontabをこのスケジュールで更新するには、コマンドラインから whenever --update-crontabをコマンドラインから実行する必要がある。
そして出来上がり!xkcdコミックが毎日MMSで届く。
Screenshot of xkcd comic in an MMS
結論と次のステップ
このブログポストでは、MMSについて、MMSでできること、Vonage Messages APIを使ってMMSメッセージを送信する方法について、もう少し詳しくご紹介します。
私たちは常に地域社会の参加を歓迎しています。お気軽に VonageコミュニティSlackまたは ツイッター.