oEmbed
HubSpotでは2つの動画埋め込みモジュール(Eメールおよびページ)、カスタムモジュール用の1つの埋め込みフィールド(メディアURL)、さらにウェブサイトでの埋め込みコンテンツの実装にoEmbedを使用する1つの関数(Eメールのみ)を提供しています。
HubSpotのモジュール内には「メディアURL」フィールドがあります。このフィールドは、前述のoEmbed仕様の「URL」パラメーターに相当します。HubSpotのモジュールは、ここに指定されるURLから、oEmbedレスポンスと呼ばれる情報をリクエストする処理を実行し、サイトで使用できるようにします。
Eメール内でoembed()
関数を使用する場合は、URL、最大幅、最大の高さを含むリクエスト文字列を指定するだけです。開発者ドキュメントでこの関数の例を参照できます。
oEmbedレスポンスは、プロバイダー(YouTube、Flickr、およびoEmbedに対応しているその他のプロバイダー)によって返されるJSONデータです。レスポンスのパラメーターについては、oEmbedドキュメントのセクション2.3.4で確認できます。レスポンスタイプ(photo、video、link、rich)ごとに固有のパラメーターが関連付けられています。
YouTubeからのoEmbedレスポンスの例を次に示します。この例では、タイプがvideoで、ウェブサイトへの動画プレイヤーの埋め込みに使用可能なコードを返すHTMLパラメーターが含まれていることが分かります。
モジュールがEメール専用の場合に埋め込みフィールドを使用するには、埋め込みフィールドとoembed()
関数を組み合わせて使用することをお勧めします。次にこの使用例を示します。
この関数は、指定されたurlに対するoEmbedレスポンスのパラメーターを含むディクショナリー(辞書型)を返します。個々のパラメーターには、ドット表記を使用してアクセスできます。
YouTubeの動画をメディアurlソースとして使用する例を以下に示します。
モジュールがページまたはブログ内で使用されている場合、JavaScriptを使用してoEmbedレスポンスを取得することをお勧めします。この方法が推奨される理由は、埋め込みフィールドを使用して結果を取得する際に、HubSpot側で結果がキャッシュされ、oEmbedデータが時間の経過と共に古くなる可能性があるためです。
JavaScriptを使用してoEmbedレスポンスの結果を取得する例を示します。この方法では結果が古くなる(キャッシュされる)ことがありません。
注:これらは全て、カスタムモジュールのHTML + HubLセクションで行われます。また、モジュールコード開始時の条件に基づいて正しいCSSとJavaScriptを適切なエリアに配置するために、タグが使用されます。
モジュールをページやブログと共にEメールにも使用している場合、oembed_response
オブジェクトを使用することもできます。URLが[メディアURL]フィールドに入力されて取り込まれると、このデータはoembed_response
オブジェクトでの使用のためにHubSpot側でキャッシュされます。oembed_response
ディクショナリーの表示方法の例を以下に示します。
ドット表記を使用してディクショナリーの子要素を取得できます。例えば、YouTubeの動画をソースとして使用する場合は以下のように処理できます。
キャッシュされたoembed_response
のデータを更新するには、メディアURLを変更(1つの文字を削除して、再び追加)し、変更をモジュールに再適用します。
「メディアURL」リンクを動画埋め込みモジュールまたは埋め込みフィールドに追加する際には、次のようなエラーが発生することがあります。
「共有用にこのメディアURLを埋め込むことはできません。」
このエラーが発生した場合は、プロバイダーにいくつかの事項を確認します。
- アセットプロバイダーのプラットフォームでoEmbed機能が提供されているか?oEmbedの公式ドキュメントには、この仕様に対応しているプロバイダーのリストが記載されています。また、プロバイダーに直接連絡して対応状況を確かめることもできます。
- URLは「非公開」か?多くのプラットフォームでは、ユーザーがコンテンツを非公開にできます。例えば、Instagramのアカウントが非公開の場合、投稿が公開されている(ユーザーによるプラットフォームへのサインインや、フォロワー/フレンドの関係性を必要としない)状態でなければ、そのコンテンツを埋め込むことはできません。
oEmbed仕様に従って定義されているステータスコードを以下に示します。
- 404 Not Found:リクエストされたURLのレスポンスがありません。
- 501 Not Implemented:リクエストされたレスポンス形式を返すことができません。
- 401 Unauthorized:リクエストされたURLに非公開のリソースが含まれています。
HubSpotは、サードパーティープロバイダーによるステータスコードの実装状況、またはoEmbed仕様への準拠状況に直接関与する立場にはありません。このためHubSpotでは、該当する場合には404エラーを返し、それ以外の場合は400ステータスコードまたは前述の内容に類似したメッセージを返します。メッセージは、レスポンスオブジェクトのmessage
プロパティーに格納されます。
貴重なご意見をありがとうございました。