アウトバウンドサポート
アウトバウンドサポートを使用すれば、アプリ内で発生した問題を顧客と積極的に関わり合いながら解決へと導くことができます。この機能の詳細については、こちらをご参照ください。
SDKに含まれているすべてのパブリックAPIは、Helpshift.install() APIを介してSDKを初期化した後に呼び出す必要があります
この機能の使用手順は、以下の通りです。
アウトバウンドサポート用のリンクを生成するには、Helpshiftのダッシュボードで、「設定」、「ワークフロー」、「アウトバウンドのサポート」の順に移動します。

「リンクを作成」ボタンが表示されているはずです。「リンクを作成」ボタンをクリックし、チャット、ヘルプセンター、シングルFAQ、FAQセクションなどのアクションと、Helpshift SDKにペイロードとして送信するCIF、タグ、最初のユーザーメッセージなどのデータを選択します。

最後に、URLエンコードされたペイロードのリンクを取得します。既存のプッシュ通知システムを使用して、このリンクを通知ペイロードに埋め込まれたエンドユーザーへと送信します。
YOUR_APP_IDENTIFIERには、アプリを識別する一意の文字列を指定できます。たとえば、myAppやmyAppSupportなど、アプリのディープリンクURLで使用するスキームのようなものを指定します。

プッシュ通知のデータをHelpshift SDKにデリゲートする
アウトバウンドサポートのデータをHelpshiftに渡すには、以下の手順に従ってください。
アプリのプッシュ通知システムを使用して積極的なサポートを実施するユーザーにプッシュ通知を送信します
ユーザーが通知を介してアプリを開いたときに、通知データを
application:didReceiveRemoteNotification:またはapplication:didReceiveRemoteNotification:fetchCompletionHandler:のhandleProactiveLink:(NSString *) proactiveLink関数を呼び出すことによってHelpshift SDKに渡すようにアプリ内でこの通知を処理します。提供されたリンクからデータを読み取り、アウトバウンドサポートダッシュボードから提供された構成を用いてHelpshiftのサポートを開きます。
[Helpshift handleProactiveLink:proactiveLink];
アウトバウンドサポートとHelpshiftの両方の通知を管理する必要があります。例として、Helpshiftのチャットメッセージの通知を受信すると、
[Helpshift handleNotificationWithUserInfoDictionary:]に続いてcompletionHandler(UNNotificationPresentationOptionNone);を呼び出すことができます。アウトバウンドサポートの通知を受信すると、completionHandler(UNNotificationPresentationOptionAlert);を実行することができます。これはあくまでも参考のための例です。実際の実装内容は、アプリの通知処理コードに依存します。
たとえば、以下のコードは受信したプッシュ通知を処理し、それをデバイスの通知センターに表示する方法を示しています。
- (void) userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification(UNNotification *)notification withCompletionHandler:(void (^(UNNotificationPresentationOptions)) completionHandler {
//Helpshift normal notification.
if([[notification.request.content.userInfo objectForKey:@"origin"] isEqualToString:@"helpshift"]) {
[Helpshift handleNotificationWithUserInfoDictionary:notification.request.content.userInfo isAppLaunch:NO];
completionHandler(UNNotificationPresentationOptionNone);
} else {
// Display Outbound notification in app when app is in foreground.
completionHandler(UNNotificationPresentationOptionAlert);
}
}
通知の処理:
以下のコードでは、Helpshift.handleProactiveLink()を呼び出してプッシュ通知のデータをHelpshift SDKにデリゲートする方法を示しています。
- (void) userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void (^)(void))completionHandler {
if([response.notification.request.content.userInfo[@"origin"] isEqualToString:@"helpshift"]) {
[Helpshift handleNotificationWithUserInfoDictionary:response.notification.request.content.userInfo
isAppLaunch:YES];
} else {
NSString* proactiveLink = response.notification.request.content.userInfo[@"helpshift_proactive_link"];
if (proactiveLink != nil) {
[Helpshift handleProactiveLink:proactiveLink];
}
}
completionHandler();
}
現在のユーザーに固有の構成を渡す
ユーザーが通知をクリックした際に、アプリ内の現在のユーザーに固有の構成を追加したい場合があるかもしれません。
ローカルAPIの構成を設定することにより、Helpshift SDKは(先のステップで述べたように)アウトバウンドサポートのリンクに埋め込まれた構成と、実行時に提供されるローカル構成の両方から構成をマージすることができます。このローカルAPIの構成は、showConversation()やshowFAQs()のようなその他のAPIに期待される構成と全く同じです。
この構成は、現在の問題と、同じセッションで提出された次の問題に使用されます。
このAPIは、Helpshift Installation APIよりも後、そしてHelpshift.handleProactiveLink()よりも前に呼び出す必要があります。
いずれかのクラスのパブリックインターフェースIHelpshiftProactiveAPIConfigCollectorを実装し、SetHelpshiftProactiveConfigCollector(new ProactiveConfigCollector())メソッドを呼び出してHelpshift SDKのインストール呼び出しの後に構成コレクターデリゲートを初期化します。
showConversation()やshowFAQs()のようなその他のパブリックAPIで追加する場合と同じフォーマットで、ユーザー固有の構成を追加するためのgetLocalApiConfig()メソッドを実装する必要があります。
この構成と、アウトバウンドサポートのリンクに埋め込まれている構成をマージします。タグ、CIFなど、アウトバウンドサポートのリンクからの構成データをローカル構成に追加します。コンフリクトが発生した場合には、アウトバウンドサポートの構成が優先されます。
例:
// initialise proactiveConfig collector
public class ProactiveConfigCollector : IHelpshiftProactiveAPIConfigCollector
{
public Dictionary<string, object> getLocalApiConfig()
{
Dictionary<string, object> proactiveConfig = new Dictionary<string, object>();
proactiveConfig.Add("initialUserMessage", "Hi there!");
proactiveConfig.Add("fullPrivacy", true);
proactiveConfig.Add("tags", new string[] { "vip", "payment", "blocked", "renewal" });
..
..
return proactiveConfig;
}
}