Неверное имя намерения для действий Google - PullRequest
0 голосов
/ 30 марта 2020

Я работаю над добавлением действий Google Assistant в свое приложение. При запуске средства тестирования действий приложения появляется сообщение об ошибке ниже, и я не знаю, что делать.

App Actions Test Tool v3.1.5
                Preview Creation Error
                Status Code: 400
                Message: Precondition check failed.
                - Invalid intent name 'actions.intent.CHANGE_MY_SHIPMENT_DATE_BY_DATE'
                - Invalid intent name 'actions.intent.CHANGE_MY_SHIPMENT_DATE_BY_DURATION'
                - Invalid intent name 'actions.intent.CHANGE_MY_FREQUENCY'
                - Invalid intent name 'actions.intent.ADD_FLOW'
                - Invalid intent name 'actions.intent.ADD_TO_SUBSCRIPTION'
                - Invalid intent name 'actions.intent.REMOVE_FLOW'
                - Invalid intent name 'actions.intent.SNOOZE'
                - Invalid intent name 'actions.intent.CUSTOMER_SERVICE'
                - A parameter mapping is missing for the URL parameter 'box' in URL template 'content://com.xxyz.app.slices.provider/remove_flow{?product,box}' for intent 'actions.intent.REMOVE_FLOW'

действия. xml

<actions>
    <action intentName="actions.intent.CHANGE_MY_SHIPMENT_DATE_BY_DATE">
        <fulfillment
            fulfillmentMode="actions.fulfillment.SLICE"
            urlTemplate="content://com.xyz.app.slices.provider/change_shipment_by_date{?datetime}">
            <parameter-mapping
                intentParameter="datetimeType"
                required="false"
                urlParameter="datetime" />
        </fulfillment>
    </action>
...
 <action intentName="actions.intent.CUSTOMER_SERVICE">
        <fulfillment urlTemplate="https://xyz-app.firebaseapp.com/customer_service"/>
    </action>
</actions>

Я следовал фитнес-приложение, которое Google предоставляет в качестве примера, но оно не работает.

Я сгенерировал aab-файл и загрузил его на внутренний канал управления релизами. У меня уже есть приложение в производстве, и я сохранил то же имя pkg для этого нового приложения.

Кроме того, я добавил эти намерения в консоли DialogFlow и Actions. Поток работает при тестировании в облаке, а также с помощью Google Assistant на моем устройстве. GA распознает поток диалога, но в приложении ничего не произошло. Нет ломтиков или глубоких ссылок. Я добавил журналы, и ни один из журналов не показывает. Работает только следующий инициал:

@RequiresApi(Build.VERSION_CODES.P)
  private fun grantAssistantPermissions() {
    Timber.e(" [VOICEASSISTANT] grantAssistantPermissions")

    getAssistantPackage()?.let { assistantPackage ->
      val sliceProviderUri = Uri.Builder()
          .scheme(ContentResolver.SCHEME_CONTENT)
          .authority(SLICE_AUTHORITY)
          .build()

      SliceManager.getInstance(this).grantSlicePermission(assistantPackage, sliceProviderUri)
    }
  }

  @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
  private fun getAssistantPackage(): String? {
    val resolveInfoList = packageManager?.queryIntentServices(
        Intent(VoiceInteractionService.SERVICE_INTERFACE), 0
    )
    return resolveInfoList?.firstOrNull()?.serviceInfo?.packageName
  }

Мой манифест содержит:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.app.slice.category.SLICE" />
        </intent-filter>
    </provider>

...

        <!-- Define your supported deeplinks -->
        <intent-filter
            android:autoVerify="true"
            tools:targetApi="m">
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="xyz-app.firebaseapp.com"
                android:scheme="https" />
        </intent-filter>

        <!-- Required to support search action intents from Google Search -->
        <intent-filter>
            <action android:name="com.google.android.gms.actions.SEARCH_ACTION" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

Любая идея, почему это продолжаете жаловаться на плохое намерение назвать или даже не реагировать на любые действия, которые я спрашиваю?

У меня нет ни малейшего понятия, чтобы проверить, получены ли действия приложением. Я ожидал намерения, но ничего. Поскольку инструмент действий уже вызывает ошибки, я предполагаю, что не могу ожидать, что действия будут работать xml, как ожидалось

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 31 марта 2020

Действия приложения и фрагменты работают только со встроенными Intents, которые доступны для действий приложения . Они недоступны для пользовательских диалоговых действий или диалоговых действий, созданных с помощью Dialogflow.

...