はじめに
プリザンターの新規作成画面、管理画面で固定的な既定値を設定することが出来ます。ただし、これは決め打ちになってしまいます。
サーバスクリプトを使えば、modelに値をセットすることで動的に既定値を変更することが出来ます。今回は、サーバスクリプトとURLのクエリを使用して、URLにセットしたデータを既定値として使用する方法を紹介します。
実装方法
プリザンターの新規作成画面のURLはhttp(s)://{IPアドレス or ドメイン}/items/{サイトID}/new
となっています。これにクエリパラメータを連結することで、プリザンターにデータを渡すことが出来ます。これを実現するには、サーバスクリプトのcontext.QueryStrings
を使用します。
実際に新規作成画面に対して、データを渡すことを想定して、サーバスクリプトを書いてみます。
//使用するURL
http(s)://{IPアドレス or ドメイン}/items/{サイトID}/new?ClassA=hogehoge
if (context.Action === 'new') {
var data = context.QueryStrings.Data('ClassA');
logs.LogInfo(data);
}
これを画面表示の前を条件にして、実際に実行してみるとデバッグウインドウにはこのように表示されます。
きちんとデータを取得出来ることが確認出来ました。
URLエンコードが必要な文字を使用する場合は、渡す時にエンコード、渡されたものを受け取った時にデコードが必要になるので、注意してください。(今回、そこは割愛します)
では、実際に取得したデータを既定値としてセットしてみます。
if (context.Action === 'new') {
var data = context.QueryStrings.Data('ClassA');
if(data) {//クエリの中身があるときだけセットする(=クエリがなければ管理画面でセットした既定値が生きる)
model.ClassA = data;
}
}
実行条件は先ほどと同じ画面表示の前です。
分類A(ClassA)にきちんと渡した値がセットされていますね。
非ログイン状態だとどうなるの?
上のデモはログイン状態で行っていますが、非ログイン状態でも問題無く動作します。
追加したクエリは変更されずにリダイレクト処理が行われるので、ログイン画面を間に挟むだけで既定値を持った状態で新規作成画面が開かれます。
まとめ
今回はURLから新規作成画面に既定値を渡す方法を紹介しました。この方法を使うと、外部システムからプリザンターの画面をポップアップした時に既定値を持たせることが簡単にできるようになります。
外部のCTIシステムから電話番号を渡した状態で、プリザンターの新規作成画面をポップアップさせることが出来るようになるなど、いろいろと活用シーンがありますので、是非活用してみてください。