https://d226lax1qjow5r.cloudfront.net/blog/blogposts/what-can-i-do-with-mms/what-mms-can-do.png

MMSで何ができるか?

最終更新日 August 30, 2022

所要時間:1 分

MMSで何ができるか?

最近、このような質問が社内のSlackチャンネルに投稿された。

Slack screenshot showing the message "Hi team, what types of files can be sent over MMS?"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である必要があります。 tofromNumbers

番号へ

現在、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つのことをする:

そして、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 gemwhenever 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, vonageget_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 Application Capabilities, with the toggle set to "on"Screenshot of the Messages toggle in the Dashboard

作成されたアプリケーションには、固有のアプリケーションIDが付与されます。また、このアプリケーションの秘密鍵を生成し、ダウンロードすることもできます。

Screenshot of the Generate Private Key button in the Dashboard Application pageScreenshot of the Generate Private Key button in the Dashboard

私の秘密鍵はプロジェクトファイルのルート・ディレクトリに保存されています。私のアプリIDと秘密鍵へのパスは、私の .envファイルに定義されている。

当社のサーバーSDKは、認証やHTTPリクエストヘッダーの生成など、細かい部分にも対応しています。この application_idprivate_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 typeaudio, videoまたは vcard).ハッシュでは messageハッシュでは urlのURLに imgのURLに設定し、オプションの captiontitleを設定しています。

MMSメッセージの送信

そして、アプリケーションの重要な部分であるMMSメッセージの送信へ!

client.messaging.send(from: ENV['FROM_NUMBER'], to: ENV['TO_NUMBER'], **message)

メソッドを呼び出す messagingメソッドを呼び出すと Clientオブジェクトを返します。 Messagingオブジェクトを返します。次に sendメソッド呼び出しをこの返されたオブジェクトに連鎖させます。 fromto引数と渡された messageオブジェクトを組み合わせ、JSONに変換し、HTTPリクエストのボディとしてMessages APIエンドポイントに送信する。 POSTエンドポイントに HTTP リクエストのボディとして送信します。

の制限に留意すること。 fromtoNumbersの制限に留意すること。

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 issue 974 'The General Problem' in an MMSScreenshot of xkcd comic in an MMS

結論と次のステップ

このブログポストでは、MMSについて、MMSでできること、Vonage Messages APIを使ってMMSメッセージを送信する方法について、もう少し詳しくご紹介します。

私たちは常に地域社会の参加を歓迎しています。お気軽に VonageコミュニティSlackまたは ツイッター.

シェア:

https://a.storyblok.com/f/270183/373x376/e8d3211236/karl-lingiah.png
Karl LingiahRuby開発者支援

KarlはVonageのDeveloper Advocateで、RubyサーバSDKのメンテナンスとコミュニティの開発者エクスペリエンスの向上に注力しています。彼は学ぶこと、ものを作ること、知識を共有すること、そして一般的にウェブ技術に関連することが大好きです。