Começando
Em cinco passos o chat da Atalia abre dentro do seu app. Escolha a plataforma nas abas: a escolha vale para todas as páginas do SDK.
1. Instalar
- Android
- iOS
O pacote está no Maven Central, que os projetos do Android Studio já usam.
dependencies {
implementation("ai.atalia:chat:0.4.0")
}
No Xcode, vá em File › Add Package Dependencies, informe o endereço abaixo e adicione o produto AtaliaChat ao alvo do app.
https://github.com/Atalia-IA/atalia-mobile-sdk
Num Package.swift:
dependencies: [
.package(url: "https://github.com/Atalia-IA/atalia-mobile-sdk", from: "0.4.0"),
],
targets: [
.target(name: "MeuApp", dependencies: [
.product(name: "AtaliaChat", package: "atalia-mobile-sdk"),
]),
]
O SDK é distribuído só pelo Swift Package Manager (não há CocoaPods).
2. Configurar
Chame o configure uma vez, quando o app inicia, com o token do canal (Configurações › Canais › Editar canal › Instalação › Token do widget).
- Android
- iOS
No onCreate da sua Application:
import ai.atalia.chat.Atalia
class MeuApp : Application() {
override fun onCreate() {
super.onCreate()
Atalia.configure(this, "<token-do-canal>")
}
}
Se o app ainda não tem uma Application própria, registre a classe no manifest:
<application
android:name=".MeuApp">
</application>
No AppDelegate:
import AtaliaChat
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Atalia.configure(channelToken: "<token-do-canal>")
return true
}
Num app só com SwiftUI, no init do App:
import AtaliaChat
import SwiftUI
@main
struct MeuApp: App {
init() {
Atalia.configure(channelToken: "<token-do-canal>")
}
var body: some Scene {
WindowGroup { ContentView() }
}
}
Com notificações push, prefira o AppDelegate: o toque que abre o app chega logo depois que ele inicia.
O configure aceita opções (outro endereço, domínio próprio do canal, esconder o botão "Fechar"...): veja AtaliaOptions na referência do Android e do iOS.
3. Abrir o chat
- Android
- iOS
Atalia.open(activity)
O chat abre numa folha que sobe sobre o app, numa activity própria do SDK. O botão "Fechar" do chat, a alça da folha, o toque fora dela e o voltar do sistema fecham. Para tela cheia, AtaliaOptions(presentation = AtaliaOptions.Presentation.FULL_SCREEN).
Atalia.present(from: self)
struct AjudaView: View {
@State private var mostrarChat = false
var body: some View {
Button("Falar com a gente") { mostrarChat = true }
.ataliaChat(isPresented: $mostrarChat)
}
}
O chat abre numa folha que sobe sobre o app; arrastar para baixo ou o botão "Fechar" do chat fecham. Para tela cheia, AtaliaOptions(presentationStyle: .fullScreen).
Para o chat ser uma aba do app, em vez de abrir por cima, use AtaliaChatView() (SwiftUI) ou AtaliaChatViewController (UIKit) e configure com AtaliaOptions(closeButton: false).
Quer um botão pronto, flutuando no canto da tela? Veja o botão flutuante.
4. Liberar câmera e microfone
O cliente manda foto pela câmera e nota de voz no chat. Cada plataforma pede uma declaração diferente.
- Android
- iOS
Para a nota de voz, declare as duas permissões abaixo. Sem elas, o microfone é negado e o chat avisa o cliente.
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
A foto pela câmera funciona sem permissão nenhuma. Se o seu app já declara CAMERA por outro motivo, o SDK pede a permissão na hora de usar.
Adicione as duas chaves ao Info.plist (no Xcode: alvo do app › Info, ou Build Settings › "Privacy - Camera Usage Description" e "Privacy - Microphone Usage Description").
<key>NSCameraUsageDescription</key>
<string>Para enviar fotos no chat de atendimento.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Para gravar mensagens de voz no chat de atendimento.</string>
Sem NSCameraUsageDescription, o iOS fecha o app quando o cliente escolhe tirar uma foto no chat. Sem a do microfone, o SDK nega o pedido e o chat mostra um aviso: o app não fecha.
5. Mostrar as não lidas
O SDK conta as mensagens do atendente, da IA e do sistema que o cliente ainda não leu, sem abrir o chat. Use para pôr um número no seu menu ou na aba de ajuda.
- Android
- iOS
lifecycleScope.launch {
Atalia.unreadCount.collect { total -> badge.text = total.toString() }
}
struct MenuView: View {
@ObservedObject private var atalia = Atalia.state
var body: some View {
Text("Atendimento (\(atalia.unreadCount))")
}
}
O contador se atualiza sozinho quando o app volta para a frente e enquanto o chat está aberto.
Conferir
Rode o app, abra o chat e mande uma mensagem: a conversa aparece na caixa de entrada da Atalia, no canal de webchat. Para inspecionar o chat durante o desenvolvimento, ligue debug nas opções e use o chrome://inspect (Android) ou o menu Desenvolver do Safari (iOS 16.4 ou mais novo). Desligue antes de publicar.
Próximo passo: identificar o usuário logado.