Skip to main content

■ 置き換えタグ一覧


置き換えタグとは、返信メッセージで利用可能な表記方法です。これらを組み合わせることで、ユーザーからの入力に応じて会話を制御することができます。

以下は、Botbirdbizで使用可能な置き換えタグの一覧です。

基本の置き換えタグ

ユーザ情報、入力を受け取るタグ

{@} : @(ユーザーのID)
{id} : ユーザーのID
{uid} : ユーザーのID  ※{id}とは異なる表現のIDに使われる場合があります。
{name} : ユーザーの名前
{message} : ユーザーのメッセージ内容
{tweet} : ユーザーのメッセージ内容
{message-searchword} : ユーザーのメッセージ内容(検索用語を除外)
{tweet-searchword} : ユーザーのメッセージ内容(検索用語を除外)
{match} : シンプル返信の正規表現マッチ結果
{match0-1} : シンプル返信の正規表現マッチ結果[0][1]

※数字は最大「99-99」までご利用可能です(正規表現の内容によって代入される文字列は異なります)。
※例1)反応ワード:「これあげる!【(.+?)】」
→返信メッセージ:「{@} {match0-1}有難う!」

※例2)生成AI(ChatGPT)に利用者の入力をそのまま送信して応答を生成する時には、以下のように置き換えタグを使います。
→返信メッセージ:「{chatgpt:{message}}」

生成AIの置き換えタグはこちら

文字列操作

{substr:数字1:数字2:操作前の文字列} : 「操作前の文字列」を[数字1]文字目から[数字2] 文字切り出します。 ※[数字1]は0スタートです。

例:{substr:0:5:abcdefghijklmn} → 「abcde」が出力されます。
例:{substr:2:5:abcdefghijklmn} → 「cdefg」が出力されます。

{feature:文字列} 特徴語の抽出。文章を入れると名詞中心に特徴語を抽出します。

{urlencode:文字列} 文字列をURLエンコードする。URLパラメータ等でご利用下さい。

{probability:確率:文字列} 確率(1〜99)で文字列を返す。

ランダム変換

{random:数字-数字} : ランダムの数字(例){random:1-30}
{random:文字列,文字列,文字列} : ランダムの文字列(例){random:おはよう!,おはよ,おっはー}

強制改行

改行に対応している出力先のみ利用可能です。

{crlf}

時刻

{year} : 現在の年
{month} : 現在の月
{day} : 現在の日付
{hour} : 現在の時
{minute} : 現在の分
{second} : 現在の秒
{time} : 現在のUnixTime( (1970 年 1 月 1 日 00:00:00 GMT) からの通算秒)
{strtotime:日付と時刻の書式} : 指定の日付と時刻の書式のUNIXタイムスタンプ
{utstrtotime:UNIXTIME:日付と時刻の書式} : 指定のUNIX地タイムスタンプを基準とした、指定の日付と時刻の書式のUNIXタイムスタンプ
{adayoftheweek} : 現在の曜日
{adayoftheweekjp} : 現在の曜日(日本語)
{strftime:汎用時刻format} : 汎用的な時間表現(日本時間)
{gmstrftime:汎用時刻format} : 汎用的な時間表現(世界標準時)
{gmstrftime+数字:汎用時刻format} : 汎用的な時間表現(世界標準時プラスx時間)
{gmstrftime-数字:汎用時刻format} : 汎用的な時間表現(世界標準時マイナスx時間){utstrftime:UNIXTIME:汎用時刻format} : 汎用的な時間表現(指定のUNIXタイムスタンプ)

※strftimeで利用可能な汎用時刻formatについては下記URLをご参照下さい。 http://php.net/manual/ja/function.strftime.php

※strtotimeで利用可能な日付と時刻の書式については下記URLをご参照下さい。 https://www.php.net/manual/ja/datetime.formats.php

※UNIXタイムスタンプ( (1970 年 1 月 1 日 00:00:00 GMT) からの通算秒)については下記URLをご参照下さい。 https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93

計算式

{math::四則計算式} : 計算結果を出力します。※コロン「:」は2連続します。
{math:floor:四則計算式} : 計算結果を小数点一桁で切り捨てて出力します。
{math:ceil:四則計算式} : 計算結果を小数点一桁で切り上げて出力します。
{math:round:四則計算式} : 計算結果を小数点一桁で四捨五入して出力します。

例:{math::2*(5+5)*8}
→「2*(5+5)*8」の結果「160」を出力します
例:{math:ceil:(1595516400-{time})/60/60/24}
→現在時刻{time}から、2020/7/24(=Unixtimeで1595516400)までの残り日数を切り上げて出力します。


Unixtime変換についてはこちらをご参照ください

ユーザ毎の設定

購読設定

定期・ランダムボット、曜日・時間指定ボットなどの プッシュ型の配信をユーザごとに配信するか否かを設定する。

note

プッシュ型の配信は、Webチャットでは利用できません。「Slack、Teams、Zoom、LINEWORKS」 などをお使いください。

{subscribe} : 今話しているユーザーを購読させる
{unsubscribe} : 今話しているユーザーを購読終了させる

※例)反応ワード:「購読する」
→返信メッセージ:「{name}さん有難う!これから情報配信しますね!{subscribe} 」
※例)反応ワード:「購読やめる」
→返信メッセージ:「{name}さん有難うございました!{unsubscribe} 」

フラグ設定

{flag_on:xxxxx} : 今話しているユーザーにフラグを立てる(xxxxxxは半角数値0または1で表現されたフラグ。最大32桁)
{flag_off:xxxxx} : 今話しているユーザーのフラグを下ろす(xxxxxxは半角数値0または1で表現されたフラグ。最大32桁)


例)返信メッセージ:「フラグをたてます{flag_on:1000}」
→下から4番目のフラグを立てます。
例)返信メッセージ:「フラグをおろします{flag_off:0100}」
→下から3番目のフラグを降ろします。

note

仕様上、プレビューでは動作しませんのでご了承下さい。

note

このフラグを使うことで、下記の{if}を利用した返信振り分けやシナリオ起動振り分けが可能となります。

キオク・好感度・統計関連

{like:xxxxxx} : xxxxxxさんへのスキ度(xxxxxxはユーザーのID)
{like:{id}} : xxxxxxさんへのスキ度(返信ボット利用時)
{dislike:xxxxxx} : xxxxxxさんへのキライ度(xxxxxxはユーザーのID)
{dislike:{id}} : xxxxxxさんへのキライ度(返信ボット利用時)
{mention_res:xxxxxx} : xxxxxxさんへの返信回数(xxxxxxはユーザーのID)
{mention_res:{id}} : xxxxxxさんへの返信回数(返信ボット利用時)
{like_total} : スキ度の全員の合計値
{dislike_total} : キライ度の全員の合計値
{mention_res_total} : 返信回数の全員の合計値
{mood} : 現在の自分のごきげん度

ニックネームや記録用語の設定

{nickname} : ユーザー毎に指定したニックネーム。ニックネーム設定がない場合は{name}同等となります。
{user_word1} : ユーザー毎に指定した用語1。
{user_word2} : ユーザー毎に指定した用語2。
{user_word3} : ユーザー毎に指定した用語3。

※{nickname}{user_word(数字)}はそれぞれ、シンプル返信の「反応ワード」側に{set_nickname}{set_user_word(数字)}と指定することで、ユーザーに自動設定してもらうことも可能です。
(例:反応ワード『「{set_nickname}」って呼んで下さい』→返信メッセージ『わかりました、{nickname}さんですね!』)
(例:反応ワード『私は「{set_user_word1}」が大好きです』→返信メッセージ『{user_word1}がスキなのですね、覚えておきます!』)

※下記の4つはシンプル返信の「反応ワード側」の置換文字です
{set_nickname} : ニックネーム指定を受け付ける。
{set_user_word1} : ユーザーワード1指定を受け付ける。
{set_user_word2} : ユーザーワード1指定を受け付ける。
{set_user_word3} : ユーザーワード1指定を受け付ける。

条件文(if文)

対象ユーザの状態によるメッセージフィルタリング

note

シンプル返信、定期(ランダム)ボット、時報ボット、RSS配信ボットで利用できます。 Webチャットは対応していません。

warning

Twitterタイムラインの場合は、if文の内容にかかわらず無条件配信となります。

warning

このif文は、1メッセージあたり1件まで、また他のタグ等と混在させる場合は最後に配置して下さい。

{if:[条件],メッセージ}
※[条件]に合うときにのみ、メッセージを配信します。

{if:[条件],条件に合致したときのメッセージ,条件に合致しなかったときのメッセージ}
※[条件]に合うときと合わないときに分けて、メッセージを配信します。

[条件]の書き方
・パラメータ 演算子 値
・and(パラメータ 演算子 値,パラメータ 演算子 値)
・or(パラメータ 演算子 値,パラメータ 演算子 値)

※複数条件をand(,,,)またはor(,,,)で連結することが出来ます。

※パラメータには、下記が利用できます。
nickname : ユーザーごとに指定されたニックネーム
user_word1 : ユーザーごとに指定された文言1
user_word2 : ユーザーごとに指定された文言1
user_word3 : ユーザーごとに指定された文言1
user_flag : ユーザーごとに{flag_on:xxxxx}{flag_off:xxxxx}タグで指定されたフラグの値
like_count : ユーザーごとにカウントされたスキ度
dislike_count : ユーザーごとにカウントされたキライ度
mention_res_count : ユーザーごとにカウントされた返信回数
aid : 利用されているアプリ、プラットフォーム番号
Twitter : 1
LINE : 20
Facebook Messenger : 30
LINE WORKS : 90
SLACK:130
ZOOM:140
TEAMS:150
Google Assistant : 210
Alexa : 220
Web貼り付けチャット : 1000
CYZY SPACE:3000
管理画面プレビュー : 9999

※その他のアプリ、プラットフォームはお問い合わせ下さい。

%get_var:変数名:デフォルト値% : ユーザーごとに保存された変数
%get_json_var:変数名:JSONパラメータ名% : ユーザーごとに保存されたJSON変数内の値

※演算子には、==,!=,>,=.<=,&,~が利用できます。
※値には、数字、または文字列(””で囲んで下さい)、正規表現(””で囲んで下さい)が利用できます。

[条件]の書き方例
user_word1==”東京”
user_word1==”(東京|神奈川)”
%get_var:location:osaka%==”tokyo”
%get_json_var:location_json:0,area%==”tokyo”
like_count>100(like_count>100) ※カッコで括っても構いません
user_flag&1000 ※「&」は値をビット演算(論理積)してフラグ判断(フラグは半角数値0または1で表現された最大32桁の2進数数値)に利用します。「&」はフラグが立っている判断です。
user_flag~1000 ※「~」は値をビット演算(論理積)してフラグ判断(フラグは半角数値0または1で表現された最大32桁の2進数数値)に利用します。「~」は「&」の反対でフラグが下りている判断です。
and(like_count>100,dislike_count==0) ※コンマ区切りで複数条件を全て満たす場合に配信します。
or(like_count>100,dislike_count>100) ※oコンマ区切りで複数条件のどれかを満たす場合を真とします。

{if}の書き方例
{if:user_word1==”(東京|神奈川)”,東京の方ですね}
{if:%get_var:location:osaka%==”tokyo”,東京の方ですね}
{if:%get_json_var:location_json:0,area%==”tokyo”,東京の方ですね}
{if:(user_flag&1000),特別なあなたにだけこんばんは!}
{if:and(like_count>100,dislike_count==0),大好き!}
{if:aid=220,ALEXAへの返信}
{if:aid=20,LINEへの返信}

ユーザー変数

ユーザー毎に変数を保存して利用することが出来ます

ユーザ変数の説明はこちら

・変数に会話中ユーザーに関する値をセットする時:{set_var:変数名:値}
・会話中ユーザーの変数の値を利用する時:{get_var:変数名:デフォルト値}
・会話中ユーザーの変数の値を全て利用する時:{get_var_all}

・URLからJSON情報をGET取得して変数にセットする時:{set_json_var_url_get:変数名:URL}
・URLからJSON情報をPOST取得して変数にセットする時:{set_json_var_url_post:変数名:URL}
・URLからJSON情報をPUT取得して変数にセットする時:{set_json_var_url_put:変数名:URL}
・変数内のJSONデータ内の特定のパラメータ値を利用する時:{get_json_var:変数名:JSONパラメータ名}

ユーザー毎の言語設定

ユーザー毎に自動翻訳機能の言語設定を行うことができます。

自動翻訳の説明はこちら

{set_user_lang:言語コード}

例1){set_user_lang:ja}  : 日本語設定
例2){set_user_lang:} : 言語コードを書かないと言語の自動検出設定になります。

各種機能

RSS配信ボット

RSS配信の説明はこちら

{rss_url} : RSSのURL
{title} : アイテムのタイトル
{link} : アイテムのURL
{entrydate} : アイテムのエントリー日時
{contents} : アイテムの中身

RSS置き換えタグ

RSS配信で利用できる置き換えタグ

{rss:title:rssのURL} → 指定RSSの最初の記事のタイトル
{rss:contents:rssのURL} → 指定RSSの最初の記事の中身
{rss:link:rssのURL} → 指定RSSの最初の記事のリンクURL

例)
{rss:title:http://rss.weather.yahoo.co.jp/rss/days/4410.xml} → Yahoo!天気情報の最初の記事のタイトル
{rss:2:contents:https://news.google.com/news?output=rss&q={match0-1}} → グーグルニュース情報の最初の記事のタイトル

カスタムタグ

ボット毎に任意のタグを作成することができます。

カスタムタグの説明はこちら

{tag:xxxxxxx(タグ名)}

シナリオボット関連タグ

シナリオ起動

{snr:xxxx} : シナリオを開始する(xxxxはシナリオID)
{snr:xxxx-yyyy} : 任意のシーンからシナリオを開始する(xxxxはシナリオID、yyyyはシーンID)
{snr_reload} : 現在のシーン内容をもう一回表示する

シナリオボットの「シーン:メッセージ」「選択肢:メッセージ」「外部情報:外部APIのURL」

{snr_name} : 現在のシナリオ名
{scene_text} : 前シーンのメッセージ
{c_text} : 前シーンで選んだ選択肢テキスト
{c_key} : 前シーンで選んだ選択肢キー
{c_data:XXXX} : 前シーンで取得した外部データから選んだ選択肢の詳細データ(xxxxは、外部データJSONのアイテム内の要素名)
{set_c_data:XXXX:YYYY} : 選択肢テキスト内に記載して、次のシーンの{c_data}で利用できるデータを定義する。
{user_id} : 会話中ユーザーの各サービス上のID
{service_id} : 会話中ユーザーの利用サービスのID(LINE:20, Facebookメッセンジャー:30)
{snr_session_log} : 現在進行中のシナリオ開始からの履歴情報
{reply_to:XXXX} : 会話中ユーザーが「XXXX」と発言したものに対する返信を返す(シンプル返信に定義済みの返信を返したり、シンプル返信の設定経由で別シナリオやFAQを応える場合などに利用できます)

機械学習関連

{similar_scene:シナリオID:文言} 

シンプル返信で利用。
指定された文言をもとに、そのシナリオから良いシーンIDを選び出して自動的に遷移する。
シナリオIDはコンマ区切りで複数可能

API 接続関連 (GOLDプラン)

外部検索・データベース連動機能の利用

・シンプル返信ボットでの置き換え設定
{search_api:xxx} : 外部検索ボットを開始する(xxxxは外部検索APIのID)
{search_api:xxx:yyy} : 外部検索ボットを開始する(yyyyは外部検索APIに送るワード)
※例1)反応ワード:「新着ニュース」
→返信メッセージ :{search_api:xxxx}
→外部検索ボットのURLに「https://news.yahoo.co.jp/pickup/rss.xml」をRSSで登録しておく。※詳細設定方法は下記参照

※例2)反応ワード:「(.*)のニュース」
→返信メッセージ :{search_api:xxxx:{match0-1}}
→外部検索ボットのURLに「https://news.google.com/news」、送信パラメータに「{“output”:”rss”,”q”:”{%w%}”}」をRSSで登録しておく。※詳細設定方法は下記参照

・外部検索ボットでの置き換え設定
[URL] : 時刻の置き換え文字が利用可能です。
[送信パラメータ] :JSON形式で記載するパラメータ内で下記を利用可能
   {%q%}:外部検索起動時に受け取ったメッセージ全体
   {%u%}:会話相手のユーザーID
   {%w%}:外部検索起動時に受け取ったワード ※{search_api:xxx:yyy}のyyy部分
[結果配列名] : 外部検索結果のパラメータ名を(カンマ区切りで複数階層指定可能)
[結果表示Format] : (カンマ区切りで複数階層指定可能)
[画像URLFormat] : (カンマ区切りで複数階層指定可能。)RSSの場合は空白でも可能な場合取得します。
[リンクURLFormat] :(カンマ区切りで複数階層指定可能。) RSSの場合は空白でも可能な場合取得します。

※例1)[URL] : http://feedblog.ameba.jp/rss/ameblo/xxxxxxxxx/rss20.xml
[HTTPメソッド] : GET
[戻り値タイプ] : RSS
[結果表示Format] : :

※例2)[URL] : https://news.google.com/news
[HTTPメソッド] : GET
[送信パラメータ] : {“output”:”rss”,”q”:”{%w%}”}
[戻り値タイプ] : RSS
[結果表示Format] : :

※例3)[URL] : https://ci.nii.ac.jp/books/opensearch/search
[HTTPメソッド] : GET
[送信パラメータ] : {“format”:”json”,”q”:”{%w%}”}
[戻り値タイプ] : JSON
[結果配列名] : @graph,0,items
[結果表示Format] : 
[リンクURLFormat] :

HTTPリクエストタグ

{http_post:TRUE:URL} → 指定URL内容をPOST取得し、得られた文字を表示
{http_post:FALSE:URL} → 指定URLにPOSTする(文字は表示しない)
{http_get:TRUE:URL} → 指定URL内容をGETし、得られた文字を表示
{http_get:FALSE:URL} → 指定URL内容をGETする(文字は表示しない)
{http_put:TRUE:URL} → 指定URL内容をPUTし、得られた文字を表示
{http_put:FALSE:URL} → 指定URL内容をPUTする(文字は表示しない)

JSON置き換えタグ

{json_get:パラメータ名:JSONのURL} → 指定JSONの指定パラメータ名の値 。GET取得
{json_post:パラメータ名:JSONのURL} → 指定JSONの指定パラメータ名の値。POST取得
{json_put:パラメータ名:JSONのURL} → 指定JSONの指定パラメータ名の値。PUT取得

例)

{json_get:result:http://xxx.com/get_json?param1=aaa&param2=bbb} → 指定URLから取得したJSONデータの「result」というパラメータの値

※パラメータはコンマ区切りで多階層指定可能です。
{json_post:items,0,result:http://xxx.com/post_json?num=10} → 指定URLから取得したJSONデータの「items」配列の0番目の要素にある「result」というパラメータの値。「num=10」というパラメータは自動的にPOST用に変換されます。

{msg_param:} シンプル返信への入力情報がjson形式であった場合に、指定したキーの値を取得可能
例:検索ワード 「foo」
返信メッセージ 「{msg_param:foo}」

実際のシンプル返信への入力情報 「{“foo”:”bar”}」のとき、
実際の反応ワード 「bar」

生成AI関連タグ

生成AIに関する説明はこちら

テキスト生成

  • シンプル返信
{chatgpt:{match0-1}}     Open AI ChatGPT 
{azureopenai:{match0-1}} Microsoft Azure
{claude:{match0-1}} Anthropic
{gemini:{match0-1}} Google
{bedrock:`モデルID`:{match0-1}} Amazon Beadrock (note参照)
note

AmazonBedrockのモデルIDは、以下のページに記載されています。   https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html#model-ids-arns  

モデルIDが[xxxx:0]のように最後に[:数字]がある場合は、以下のような書式になります。
(例)
{bedrock:meta.llama3-70b-instruct-v1:0:{match0-1}}

モデルIDの最後が[:数字]でない場合には、モデルIDの後ろに[:]を付加してください。
(例)
{bedrock:amazon.titan-text-express-v1::{match0-1}}

  • 簡単FAQボット
{chatgpt_faq:QA表の数字ID:{match0-1}} 
{azureopenai_faq:QA表の数字ID:{match0-1}} 
{claude_faq:QA表の数字ID:{match0-1}} 
{bedrock_faq:`モデルID`:{match0-1}}
  • 履歴のリセット
{log_command:chatgpt_log_clear}
{log_command:claude_log_clear}
{log_command:gemini_log_clear}
{log_command:bedrock_log_clear}

画像生成

{dalle:}
{azureopenai_dalle:}

生成AIモデルの切り替え

以下のタグを使うことで、メッセージごとに使用するモデルを切り替えることが可能です。

{chatgpt_2:入力メッセージ:モデル名:::上書き指定:プロンプト}
{chatgpt_faq_2:FAQ番号:入力メッセージ:モデル名:::上書き指定:プロンプト}
  • 上書き指定がnull(何も書かない)の場合、生成AIとの接続設定で指定したシステプロンプト(性格づけ、言葉遣いなど)に後に続くプロンプトを追記します。上書き指定が1の場合、システムプロンプトを後に続くプロンプトで上書きします。

例)上書き指定なしで、gpt-4-turbo-previewモデルを使う場合

{chatgpt_2:{match0-1}:gpt-4-turbo-preview::::小学生にもわかるように、できるだけ簡単に説明してください}

こちらの記事を参考にしてください。(https://docs.botbird.biz/blog/tips-1)

生成AIアシスタント

  • アシスタントの初期化
{openai_assistant_thread_clear}
  • アシスタントの利用
{openai_assistant:生成AIアシスタントID:ユーザ入力 }

専用タグ

特定のアプリやWebチャット、特定の形態だけで利用可能な置き換えタグです

Webチャット:アバターモード専用タグ

  • アバターモデル(glb)の切り替え
{#avatar:changeAvatar:モデルglbファイルのURL#}
  • アバター表示場所の変更
{#avatar:moveAvatar:Topからのpx:Leftからのpx#}
  • アニメーション(1回)
{#avatar:animation:once:アニメglbファイルのURL#}
  • アニメーション(ループ)
{#avatar:animation:loop:アニメglbファイルのURL#}
  • カメラ位置移動
{#avatar:moveCameraPos:x座標:y座標:z座標#}
  • カメラ焦点移動
{#avatar:moveCameraTargetPos:x座標:y座標:z座標#}
  • 貼り付け元WEBページからのURL移動
{#link:行き先のURL等(<a>タグのhref相当)#}