Discourse サイトにサードパーティのボットを導入し、新規ユーザーがコミュニティに参加して会費(サブスクリプションプラグイン を通じて)を支払う前に、コミュニティの内容を理解できるようにしたいと考えています。このボットは、サイト内の投稿や CTA(Call to Action)からリンクやボタンクリックをトリガーとして起動し、ボット内で事前に定義されたフローを開始させたいと考えています。
ボット(例はこちら)は、iframe を通じて、または body タグの閉じタグの前に以下のスクリプトを組み込むことで統合可能です。
<script src="https://widget.flowxo.com/embed.js" data-fxo-widget="eyJ0aGVtZSI6IiM2N2MxOGUiLCJ3ZWIiOnsiYm90SWQiOiI1ZjYwNmFmZGJhYmU5NjAwNGIwODc4NTMiLCJ0aGVtZSI6IiM2N2MxOGUiLCJsYWJlbCI6IkV4YW1wbGVib3QifX0=" async defer></script>
そこで、私(コーディング経験のない者
)は、上記のコードと、特定の ID が付与されたリンクがクリックされたときに特定のフローを起動する追加スクリプトを含むテーマコンポーネントを作成しました。
<script type="text/javascript">
// ページの読み込みを待つ
window.onload = function() {
// ページ上の「mylink」という ID のリンクを取得
var a = document.getElementById("mylink");
// リンクがクリックされたときに実行するコードを設定
// 「onclick」に関数を割り当てる
a.onclick = function() {
// ここにコードを記述...
FxoMessenger.create();
FxoMessenger.on('stateChanged', function(state) {
if (state === 'connected') {
FxoMessenger.sendMessage('これはボット内のフローをトリガーするテキストです!');
}
});
// リンクが実際にブラウザを別のページ(この例では「google.com」)に
// リダイレクトさせたくない場合は、このブロックの最後に false を返します。
// なお、これによりイベントバブリングも防止されます。
// これはおそらくここで望ましい動作ですが、常にそうとは限りません。
return false;
}
}
理論的には動作するはずですが、残念ながら Discourse の投稿内のリンクから ID が自動的に削除されてしまいます。これを回避する方法はありますでしょうか?ご教示よろしくお願いいたします。