Alli SDKにはAndroid 4.4(APIレベル19)以上が必要です。

Step 1.SDKをダウンロードしてインポートする

1.SDKをダウンロードします。
 こちらをクリック.
2. Android Studioで、[ファイル]> [新規]> [新しいモジュール]に移動し、Alli SDKをプロジェクトにインポートします。
image2-2
3. 「ファイル」>「プロジェクト構造」>「依存関係」でファイルの依存関係として「allisdk」を追加します。
image3-1

Step 2. Alli SDKを依存関係として追加

アプリモジュールの build.gradleファイルに移動し、Alli SDKを依存関係として追加します。

  dependencies {
    implementation project(":allisdk")
  }

Step 3.アプリの許可とアクティビティを追加する

  1. 以下を「AndroidManifest.xml」に追加します。
  <manifest>
    <uses-permission android:name="android.permission.INTERNET"/>
  </manifest>

2.これらのアクティビティを「AndroidManifest.xml」のアプリケーションブロックに追加します。

  <activity
      android:name=".MainActivity"
      android:configChanges="orientation|screenSize" />

Step 4. Java 8言語機能を構成する

Androidプラグインが3.0.0以上であることを確認し、対応する build.gradleファイルで次のように設定します。

  android {
    ...
    // Configure only for each module that uses Java 8
    // language features (either in its source code or
    // through dependencies).
    compileOptions {
      sourceCompatibility JavaVersion.VERSION_1_8
      targetCompatibility JavaVersion.VERSION_1_8
    }
  }

Steps 5.Alli SDKを初期化する

  1. Alli SDKがメインファイルにインポートされていることを確認します。
  import ai.allganize.allisdk.Alli;
  import ai.allganize.allisdk.AlliErrorCode;
  import ai.allganize.allisdk.AlliEventHandler;
  1. アプリケーションの最初のActivityクラスの onCreate()メソッドに以下を追加して、APIキーでAlliライブラリを初期化します。
  protected void onCreate(Bundle savedInstanceState) {
    ...  
    // new Alli(String apiKey, WebView webView, AlliEventHandler eventHandler, boolean showHeader, boolean showFooter, boolean showBackButton)
    // showHeader - optional, default: true, If you want to remove the header, turn off this option.
    // showFooter - optional, default: true, If you want to remove the footer, turn off this option.
    // showBackButton - optional, default: true, If you want to remove the back button on the header, turn off this option.
    alli = new Alli("YOUR_API_KEY", webView, this, true, true, false);
    alli.initialize();
    ...
  }

APIキーはAlliダッシュボード >[設定]を選択し、プロジェクト設定ページに記載されています。

Step 6. ユーザーを特定する

アプリにログインし、自分が誰であるかがわかっている場合は、Alliに自分が誰であるかを伝えることができます。 ログインしていないユーザーの一時IDを設定することもできます。
(例)”LANDINGページ”の”ユーザーID:USER-123”

  protected void onCreate(Bundle savedInstanceState) {
    ...  
    userId.setText("USER-123");
    placement.setText("LANDING");
    notify.setText("NOT INITIALIZED");

    alli = new Alli("YOUR_API_KEY", webView, this);
    alli.initialize();
    ...
  }

Step 7. チャットウィンドウを作成する

チャットウィンドウを作成して顧客との会話を開始するには、以下を記載します。

alli.event(userId, placement, context);

親ViewコントローラーにAlliチャットウィンドウを実装し、親Viewコントローラーをデリゲートプロパティとして割り当てる必要があります。
この呼び出しに渡されるViewControllerが最上位のビューとなり、他のビューに遮られないことが非常に重要です。
※親Viewには、最小の高さと幅が必要です。

Step 8: Alliイベントを処理するデリゲートメソッド

次のデリゲートメソッドは、チャットの会話ステータスに関するフィードバックを提供します。

  public protocol AlliEventHandler {
    // Called when initialized successfully. 
    // You may receive NOT_INITIALIZE_YET error if 
    // called before this event.
    void onInitialized(WebView view);

    // Called when chat started successfully.
    void onConversationStarted(WebView view, String userId, String placement, Object context);


    // Called when conversation did not start 
    // even when Alli.event was called.
    void onConversationNotStarted(_ view: WKWebView!, userId: String, placement: String, context: Any?)


    // Called when user has closed the chat 
    // window or Alli.close() is called.
    void onConversationClosed(WebView view, String userId, String placement, Objective context)

    void onError(WebView view, AlliErrorCode errorCode, String userId, String placement, Object context)
  }

Step 9: チャットインターフェースを表示する

デフォルトでは、会話が行われていない場合はチャットウィンドウを非表示に設定する必要があります。

  public void onConversationClosed(WebView view, String userId, String placement, Object context) {
    view.post(() -> view.setVisibility(View.INVISIBLE));
  }

AlliEventHandler.onConversationStartedイベントを受け取ったら、チャットウィンドウを表示に変更します。

  public void onConversationStarted(WebView view, String userId, String placement, Object context) {
    view.post(() -> view.setVisibility(View.VISIBLE));
  }