SDKの構成
Helpshiftには、SDKの動作をカスタマイズするために使用可能ないくつかの構成オプションが用意されています。
SDKに含まれているすべてのパブリックAPIは、HelpshiftSdk.install() APIを介してSDKを初期化した後に呼び出す必要があります
インストール時間の構成
enableLogging
enableLoggingをtrueに設定すると、Helpshift SDKのログがXcodeのコンソールに生成されます。ロギングの有効化は、開発者が統合に関する一般的な問題を解決する際に役立ちます。
| フラグ | HelpshiftSdk.ENABLE_LOGGING |
| 値 | true/false |
| デフォルト | false |
- 10.4.0以降、- エラーログは
enableLoggingの構成に関わらず常に記録されます。
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake(){
this.help = HelpshiftSdk.GetInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add(HelpshiftSdk.ENABLE_LOGGING, true);
help.Install(appId, domainName, configMap);
}
}
enableInAppNotification
Helpshift SDKが提供するアプリ内通知サポートが不要な場合には、フラグをfalseに設定します。
この動作は、Androidでは異なっています。詳細については、こちらをご参照ください
| フラグ | HelpshiftSdk.ENABLE_INAPP_NOTIFICATION |
| 値 | true/false |
| デフォルト | true |
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake(){
this.help = HelpshiftSdk.GetInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add(HelpshiftSdk.ENABLE_INAPP_NOTIFICATION, true);
help.Install(appId, domainName, configMap);
}
}
inAppNotificationAppearance
inAppNotificationAppearanceフラグを使用したアプリ内通知の外観のカスタマイズです。この構成は、SDKのアプリ内通知の外観を示しています。エージェント/ボットがメッセージを送信したときにユーザーがアプリを使用していた場合、アプリ内バナーが表示されます。そのバナーの外観は、この辞書を使用してカスタマイズできます
| フラグ | HelpshiftSdk.INAPP_NOTIFICATION_APPEARANCE |
| サブオプション: | bannerBackgroundColor/textColor |
bannerBackgroundColor
bannerBackgroundColorは、アプリ内通知のバナーの背景色を示しています。このキーの値は、色のHEX値を示す6文字の文字列でなければなりません。
textColor
textColorは、アプリ内通知に表示されるテキストの色を示しています。このキーの値は、色のHEX値を示す6文字の文字列でなければなりません
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake(){
this.help = HelpshiftSdk.GetInstance();
Dictionary<string, object> configMap = new Dictionary<string, object>();
Dictionary<string, object> inAppNotificationAppearance = new Dictionary<string, object>();
inAppNotificationAppearance.Add(HelpshiftSdk.INAPP_NOTIFICATION_BANNER_BACKGROUND_COLOR, "000000");
inAppNotificationAppearance.Add(HelpshiftSdk.INAPP_NOTIFICATION_BANNER_TEXT_COLOR, "FFFFFF");
configMap.Add(HelpshiftSdk.INAPP_NOTIFICATION_APPEARANCE, inAppNotificationAppearance);
help.Install(appId, domainName, configMap);
}
}
タグによるFAQのフィルタリング
タグによるFAQのフィルタリングが可能です。 エンドユーザーが、たとえばユーザー属性やデバイスプロファイルに基づいて絞り込みをするなど、関連コンテンツを表示できるようにすることを目的として、開発者がこのFAQのフィルタリング機能を選択して適切な利用者に対して絞り込みが行われたFAQのリストを表示できるようになりました。
FAQのフィルタリングを使用する典型的なケースについては、以下の通りです。
- 特定の対象に向けて特定のFAQを表示する場合。例: ビジネスロジックに基づいてユーザーを「初心者」、「中級者」、「上級者」に分類する。
- デバイスの種類に基づいて特定のFAQを表示する場合。例: iPad向けとiPhone向けにFAQのセットを切り替える。
FAQのフィルタリングの手順には、2段階のアプローチが用意されています。
- FAQは、ダッシュボードの
<issue tags>フィールド(例: タグiphoneやタグipadなど)を使用して分類する必要があります。
- FAQへのタグ付けが完了すると、本項で説明されているフィルタリングオプションを使用して、SDKでフィルタリングができるようになります。
Helpshiftでは、主に「問題タグ」と「検索タグ」の2種類のタグが用意されています。
- 問題タグは、SDKのFAQのリストをフィルタリングルールでフィルタリングするために使用されます。
- 検索タグ(検索キーワードとも呼ばれています) アプリ内検索を実行する場合、Helpshift SDKはこれらのキーワードを優先します。また、FAQのタイトルや内容には含まれていないものの、ユーザーが検索する可能性のある代替のキーワードを追加するためにこれを使用することもできます。
FAQのフィルタリングの使用方法
このオプションはshowFAQs APIおよびshowFAQSection APIで対応している設定オプションです。
filterオプションは、以下の2つのキーを含むマップです。
- 演算子:
AND、OR、NOTのいずれか1つであり、設定されているタグの条件演算子として機能します。 - タグ: クエリ内の実際のタグです。
filterオプションは、showFAQs API、showFAQSection API、showSingleFAQ APIで使用されるconfigマップの"filter"キーに対するオブジェクトとして追加されます。
| オプション: | filter |
| サブオプション: | tags/operator |
| デフォルト | null |
| 最低限必要なSDKバージョン | v10.0.0 |
| 対応 | showFAQs、showFAQSection、showSingleFAQ |
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> config = new Dictionary<string, object>();
Dictionary<string, object> filter = new Dictionary<string, object>
{
{ "tags", new string[] { "tag1", "tag2" } },
{ "operator", "AND" }
};
config["filter"] = filter;
help.ShowFAQs(config);
}
}
お問い合わせを有効にする
ユーザーがFAQを表示しているときに、Helpshiftの「お問い合わせ」ボタンを表示するかどうかを制御します。このオプションをカスタマイズすることにより、サポートへのお問い合わせをより簡単にしたり、難しくしたりすることができます。指定した場合、この設定は管理者ダッシュボードで設定したお問い合わせを有効にするの値よりも優先されます。
設定可能な値には、"ALWAYS"/"AFTER_VIEWING_FAQS"/"AFTER_MARKING_ANSWER_UNHELPFUL"/"NEVER"があります。
例
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("enableContactUs", "AFTER_VIEWING_FAQS");
help.ShowFAQs(configMap);
}
}
会話のプリフィルテキスト
構成でconversationPrefillTextを設定すると、ユーザーの入力ボックスにテキストを設定することができます。このテキストは、以下の条件下で挿入されます:
- ユーザーに現在進行中の(アクティブな)問題がない場合。
- テキスト入力が新しい会話で有効化されている場合(例: ユーザーの返信入力の種類が「インテントメニューのみ」以外の場合)。
エンドユーザーは、送信前にこのテキストを編集することができます。この構成の値には1,000文字の文字数制限があるため、ユーザーの入力には最初の1,000文字のみが保持されます。
ユーザーは送信前にテキストを読んで編集する必要があるため、より良いユーザー体験のために実際のテキストはより短く設定することをお勧めします。
例:
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("conversationPrefillText", "INSERT YOUR PREFILL TEXT");
help.ShowConversation(configMap);
}
}
会話の最初のユーザーメッセージ
初期ユーザーメッセージの構成initialUserMessageはユーザーに代わって会話の最初のメッセージを送信し、このメッセージに基づいて特定のワークフローが自動的にトリガーされるようにします。
この構成は、会話が開始される前に設定する必要があります。 言い換えれば、この構成はユーザーにアクティブな会話が存在しないとき、つまり新規のユーザーが初めてチャット画面を開いたとき、 または既存のユーザーが進行中の会話をすでに閉じているときにのみ機能します。
既存の会話の途中でこの構成を設定した場合、何の影響もありません。
例:
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("initialUserMessage", "INSERT YOUR INITIAL USER MESSAGE");
help.ShowConversation(configMap);
}
}
最初のユーザーメッセージのクリア
エンドユーザーが同一のセッションですぐに新しい会話を開始した場合、
デフォルトでは最初のユーザーメッセージは同一のセッションのそれ以降のすべての問題に適用されます。
この動作は、subsequentIssuesInSameSessionConfig内のinitialUserMessageキーを適切な値に設定することで
変更が可能です。
初期ユーザーメッセージは空の文字列に設定することができます。この場合、メッセージはクリアされ、 エンドユーザーがそれ以降の問題のメッセージを入力できるようになります。また、同一のセッションのそれ以降のすべての問題に対して使用される 空ではない文字列を指定することもできます。
同一のセッションのそれ以降の問題に対して特定の自動 フローを実行する場合を除いて、この値には空の文字列を設定することをお勧めします。
現在のところ、リセットできるのは最初のユーザーメッセージのみです。タグ、カスタム問題フィールド、会話のプリフィル テキストの値は、同一のセッションのそれ以降の問題でも同じままです。
例:
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> subsequentIssuesInSameSessionConfigMap = new Dictionary<string, object>();
subsequentIssuesInSameSessionConfig.Add("initialUserMessage", "")
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("initialUserMessage", "INSERT YOUR INITIAL USER MESSAGE");
configMap.Add("subsequentIssuesInSameSessionConfig", subsequentIssuesInSameSessionConfig)
help.ShowConversation(configMap);
}
}
ベストプラクティス
- 有料ユーザーに対してはenableContactUsを
ALWAYSに設定し、無料ユーザーに対してはAFTER_VIEWING_FAQSに設定することにより、階層ベースのサポートを提供することができます。 - 自国内のユーザーに対してはenableContactUsを
ALWAYSに設定し、海外のユーザーに対してはAFTER_VIEWING_FAQSに設定することにより、国ベースのサポートを提供することができます。
フルプライバシー
このAPIの呼び出し時にhelp.ShowConversation(config); APIのconfig辞書のfullPrivacyオプションをtrueに設定しておくことにより、以下の方法を用いたCOPPAへの準拠が保証されます。
- ユーザーによるスクリーンショット撮影の無効化(SDKを使用した画像を含むファイルの添付ができなくなります)。
- SDKによる名前や電子メールなどを含む個人を特定できる情報(PII)の収集の停止(アイデンティティボットおよび/またはhelpshiftConfigオブジェクトを使用)。つまり、
userNameとuserEmailを設定し、fullPrivacyをtrueに設定している場合、HelpshiftはuserNameとuserEmailの値を使用しません。
また、ユーザーが不快なコンテンツを添付するシナリオにおいては、これはCOPPAに準拠する上で大きな問題となります。このオプションは、この問題を解決しなければならない場合に役立ちます。
例
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("fullPrivacy", true);
help.ShowConversation(configMap);
}
}
iPadでの全画面表示
presentFullScreenOniPadフラグは、iPadでサポートビューをUIModalPresentationFullScreenとUIModalPresentationFormSheetのどちらのモーダルプレゼンテーションスタイルで表示するかを決定します。この構成は、iPhoneには影響を与えません。
デフォルトの値はfalseで、UIModalPresentationFormSheetでサポートビューを表示します。値がtrueに設定されている場合、サポートビューはUIModalPresentationFullScreenで表示されます。Helpshiftを全画面モードで表示するには、この設定を使用します。
| オプション | presentFullScreenOniPad |
| 値 | true/false |
| デフォルト | false |
| 最低限必要なSDKバージョン | v10.0.0 |
| 対応 | showConversation/showFAQs/showFAQSection/showSingleFAQ |
例:
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("presentFullScreenOniPad", true);
help.ShowConversation(configMap);
}
}
チャット画面の読み込み中に新しい会話を開始する
showConversation:の構成辞書でinitiateChatOnLoadオプションをtrueに設定すると、エンドユーザーが「新しい会話」ボタンをクリックしたり、前の問題のフィードバックボットのような解決後のフローを経由することなく、前の問題が解決した直後に新しい会話を開始できるようになります。
| オプション: | initiateChatOnLoad |
| 値: | true/false |
| デフォルト: | false |
| 最低限必要なSDKバージョン | v10.0.0 |
| サポート: | showConversation |
using Helpshift;
// other imports
public class MyGameControl : MonoBehaviour
{
private HelpshiftSdk help;
void Awake() {
this.help = HelpshiftSdk.GetInstance();
help.Install(appId, domainName);
}
void OpenHelpshift() {
Dictionary<string, object> configMap = new Dictionary<string, object>();
configMap.Add("initiateChatOnLoad", true);
help.ShowConversation(configMap);
}
}
UIの構成
この構成は、Helpshift SDKのテーマ設定を示しています。詳細については、デザインをご参照ください。
トラッキング
この構成は、ユーザーの操作のトラッキングを示しています。詳細については、トラッキングをご参照ください。