メインコンテンツまでスキップ

共通仕様 / 短縮 URL

メッセージ本文に含まれる URL を短縮 URL に置き換える機能です。どのプロダクトから使っても検知と置換の挙動は同じです。

検知は変数置換({{name}} など)が行われたの文字列に対して実行されます。

指定できる場所

どのエンドポイントで指定できるかはプロダクトごとに異なります。 指定するリクエスト項目と指定できるエンドポイントは、各プロダクトのドキュメントを参照してください。

プロダクト指定できる場所
SMS/RCS即時配信のみ(配信予約にはこの設定がありません)

検知の方式

url_shortening_strategy で、本文のどの部分を URL として検知するかを選びます。

対象
TAGGED_ONLY(既定)[[]] で囲んだ URL だけ
AUTO_DETECT本文中の http(s):// 始まりの URL 全部

TAGGED_ONLY を推奨します。 AUTO_DETECT は日本語を含む URL を検出できず、末尾の記号を巻き込みます。

TAGGED_ONLY(既定)

[[]] で囲まれた http(s):// 始まりの文字列だけを短縮対象とします。マーカーは置換時に除去されます。マーカー内が URL でない場合(例: [[お知らせ]])はマーカーごと原文のまま残ります。

入力出力
詳細 [[https://example.com/c?id=1]]詳細 https://shorti.ly/XXXXXX
確認 [[ https://example.com/trim ]]確認 https://shorti.ly/XXXXXX(マーカー内前後スペースは除去)
[[お知らせ]] https://example.com[[お知らせ]] https://example.com(URL でないマーカーはそのまま。マーカー外の URL も短縮されない)
[[https://日本語.com/歴史/]]をご覧くださいhttps://shorti.ly/XXXXXXをご覧ください(マーカーで境界が明示されるため日本語 URL も対応可)

AUTO_DETECT

本文中の http(s):// 始まりの URL を自動検出してすべて短縮対象とします。URL の終端は次のルールで判定されます。

  • 非 ASCII 文字(日本語・絵文字・中韓文字等)で終端
  • 半角スペース・改行・タブで終端
  • 末尾が . , ; : ! ? ) } ] の場合、その文字は短縮 URL の対象から除外(URL の途中に現れた場合は除去しない)
入力検出される URL出力
詳細 https://example.com/path をご覧くださいhttps://example.com/path(半角スペースで終端)詳細 https://shorti.ly/XXXXXX をご覧ください
詳細はhttps://example.com/infoをご確認くださいhttps://example.com/info(日本語で終端)詳細はhttps://shorti.ly/XXXXXXをご確認ください
ご案内:https://example.com/page。またhttps://example.com/other!https://example.com/page, https://example.com/other(2 件を個別検出、末尾 ! は除外)ご案内:https://shorti.ly/XXXXXX。またhttps://shorti.ly/YYYYYY!
https://example.com と https://example.com/pathhttps://example.com, https://example.com/path(prefix 関係でも個別に短縮)https://shorti.ly/XXXXXX と https://shorti.ly/YYYYYY
確認 https://xn--wgv71a309e.jp/%E6%AD%B4%E5%8F%B2/ をどうぞhttps://xn--wgv71a309e.jp/%E6%AD%B4%E5%8F%B2/(Punycode ドメイン + パスのパーセントエンコードを検出)確認 https://shorti.ly/XXXXXX をどうぞ
詳細 [[https://example.com/path]] をどうぞhttps://example.com/pathAUTO_DETECT では [[ ]] はマーカー扱いされず本文として残る。末尾 ] は除外ルールで剥がされる)詳細 [[https://shorti.ly/XXXXXX]] をどうぞ

共通の挙動

  • 重複 URL の排除 … 同一 URL が本文中に複数回出現する場合、短縮 URL の払い出しは 1 回だけ行われ、すべての出現箇所が同じ短縮 URL に置換されます
  • 制御文字の扱い … ASCII 制御文字(\x00\x1f)は URL の一部として扱いません

注意事項

  • 日本語を含む URL は検出対象外 … 非 ASCII 文字を含む URL(例: https://日本語.com/歴史/)は AUTO_DETECT では正しく検出できません。ドメインを Punycode、パスをパーセントエンコードに変換して渡すか、TAGGED_ONLY を利用してください
  • 末尾記号の巻き込み … 末尾が . , ; : ! ? ) } ] のいずれかで終わる URL は、その 1 文字が短縮対象から除去されます(例: https://example.com/{id}.../{id として検出)。これらの記号を URL の一部として含めたい場合は TAGGED_ONLY を利用してください
  • スペース推奨 … 日本語テキストと URL を隣接させる運用では、巻き込みを避けるために URL の前後に半角スペースまたは改行を入れることを推奨します

ハイパーリンクの巻き込み

スマートフォンの SMS アプリ(特に Google Messages)は、短縮 URL の前後に文字が隣接していると URL の境界を誤認識し、ハイパーリンクが壊れる場合があります。[[]] マーカーの前後にスペースや改行を入れておけば防げます。もしくは boundary_strategy で調整してください。

挙動
NEVER(既定)短縮 URL の前後に半角スペースを挿入しない
AUTOマーカーの前後の文字をそれぞれ判別し、半角スペース・全角スペース・改行・タブ・文字列の先頭/末尾でない場合のみ半角スペースを挿入する
ALWAYS常に短縮 URL の前後に半角スペースを挿入する

改行を で表記した例です。

入力boundary_strategy出力備考
Hello[[https://example.com]]worldNEVERHellohttps://shorti.ly/XXXXXXworld英字が巻き込まれる
Hello[[https://example.com]]worldAUTOHello https://shorti.ly/XXXXXX world
Hello[[https://example.com]]worldALWAYSHello https://shorti.ly/XXXXXX world
本文 [[https://example.com]] 本文AUTO本文 https://shorti.ly/XXXXXX 本文
案内⏎[[https://example.com]]⏎どうぞAUTO案内⏎https://shorti.ly/XXXXXX⏎どうぞ改行は境界のため挿入なし
[[https://example.com]]AUTOhttps://shorti.ly/XXXXXX文頭・文末は境界のため挿入なし

TAGGED_ONLY のときのみ有効です。 url_shortening_strategyAUTO_DETECT の場合、boundary_strategy は無視されます。