■ 置き換えタグ一覧
置き換えタグとは、返信メッセージで利用可能な表記方法です。これらを組み合わせることで、ユーザーからの入力に応じて会話を制御することができます。
以下は、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)までの残り日数を切り上げて出力します。
ユーザ毎の設定
購読設定
定期・ランダムボット、曜日・時間指定ボットなどの プッシュ型の配信をユーザごとに配信するか否かを設定する。
プッシュ型の配信は、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番目のフラグを降ろします。
仕様上、プレビューでは動作しませんのでご了承下さい。
このフラグを使うことで、下記の{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文)
対象ユーザの状態によるメッセージフィルタリング
シンプル返信、定期(ランダム)ボット、時報ボット、RSS配信ボットで利用できます。 Webチャットは対応していません。
Twitterタイムラインの場合は、if文の内容にかかわらず無条件配信となります。
この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¶m2=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参照)
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の場合、システムプロンプトを後に続くプロンプトで上書きします。