全てのページ
GitBook提供
1 / 1

Loading...

Android SDK 連携

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

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

1. Alliダッシュボードにログインして「設定」メニューに移動します。下にスクロールし、Android SDKを確認し、[ダウンロードボタン]を押して、SDKをダウンロードします。

2. Android Studioで、[ファイル] > [新規]> [新しいモジュール]に移動し、Alli SDKをプロジェクトにインポートします。

3. 「ファイル」 >「プロジェクト構造」> 「依存関係」でファイルの依存関係として「allisdk」を追加します。

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

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

Step 3. アプリの権限を追加する

以下を AndroidManifest.xmlに追加します。

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

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

Step 5. Alli SDKを初期化する

  1. Alli SDKがメインファイルにインポートされていることを確認します。

  1. プリケーションの最初のActivityクラスの onCreate() メソッドに以下を追加して、SDKキーでAlliライブラリを初期化します。 ※以下の画像には”YOUR_API_KEY”と記載がありますが、こちらにSDKキーを記載ください。

アップデート June 2021

AndroidSDKにてJavascripSDKで使用可能なすべてのパラメーターを使用できます。 HashMap<String, Object> タイプを使用して、JavascriptSDKの初期化に使用されるパラメーターをAlliの引数に送信します。

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

  1. 権限の同じActivityクラスにこれを追加します。

Step 6. ダイアログを作成する

ユーザーとAlliが会話することができるダイアログを作成するには、下記を呼び出します。

ユーザIDとPlacementを特定したい場合は以下のように呼び出します。

サービスにログインして、ユーザが特定されている場合、上記のようにAlliに情報を渡すことができます。 あるいはログインしていないユーザーのために、一時的なIDを生成することもできます。

Placement情報は、ユーザーにスキルを表示したいアプリ内の場所を決定するために使用されます。Placementを作成した後、Alliダッシュボードで必要なスキルにPlacementを指定することができます。この機能の利点は、プレースメントに表示するスキルをいつでも決定できることです。

Alliダイアログは、親ビューコントローラで実装する必要があります。このとき、親ビューコントローラを委任属性に割り当てる必要があります。この呼び出しに渡されたViewControllerが最上位のビューであり、他のビューに隠れないようにしてください。 そして親ビューは、最小の高さと幅が必要です。

アップデート June 2021

event 関数を使用することで、使用可能なすべてのJavascriptパラメーターを利用することも可能です。

※上記のuserIdの形式にご注意ください。

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

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

Step 8. 他のアプリと接続

他のアプリに接続するには、次のように入力します。以下は、Googleマップにリンクする例です。

dependencies {
  implementation project(":allisdk")
}
<manifest>
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-feature android:name="android.hardware.camera" />
  <!-- file upload permission for v5.0 -->
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18"/>
  <!-- external storage use permission -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
 <uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
 <uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
</manifest>
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
  }
}
import ai.allganize.allisdk.Alli;
import ai.allganize.allisdk.AlliErrorCode;
import ai.allganize.allisdk.AlliEventHandler;
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();
  ...
}
dependencies {
  implementation project(":allisdk")
}alli = new Alli(this, apikey, webView, this,
              new HashMap<String, Object>(){{
                put("header", true);
                put("footer", false);
                put("backButton", true);
                put("styleOptions", new HashMap<String, Object>(){{
                  put("conversationContainer", new HashMap<String, Object>(){{
                    put("right", 50);
                    put("left": 50);
                    put("bottom": 50);
                  }}
                }}
              }});
Add this in the same Activity class for permissions:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    alli.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    alli.onActivityResult(this, requestCode, resultCode, data);
}
alli.event();
// user id: "USER-123"
// placement: "LANDING"
alli.event("USER-123", "LANDING", context);
alli.event(new HashMap<String, Object>(){{
            put("user", new HashMap<String, Object>(){{
                put("id", userId.getText().toString());
            }});
            put("placement", placement.getText().toString());
            put("variables", new HashMap<String, Object>(){{
                put("test", "test value");
                put("AGE", 31);
                put("BIRTHDAY", "2021-06-30");
                put("boolean", true);
            }});
        }});
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)
}
@Override
public boolean handleUrlLoading(String url) {
    Uri gmmIntentUri = Uri.parse("geo:37.4919653,127.0330243");
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
    mapIntent.setPackage("com.google.android.apps.maps");
    startActivity(mapIntent);
    return true;