# Go

go get github.com/texadigital/texa-go. The Texa API from Go, standard library only.


```bash
go get github.com/texadigital/texa-go
```

The standard library only. Source: [github.com/texadigital/texa-go](https://github.com/texadigital/texa-go).

```go
import texa "github.com/texadigital/texa-go"

c, _ := texa.New("", "")                        // key from TEXA_API_KEY, the default address
convo, _ := c.OpenConversation(ctx, texa.M{"channel": "web", "customer_ref": "user-1842"},
    "open-user-1842")
out, _ := c.SendMessage(ctx, convo.ConversationID,
    texa.M{"text": "Where is my transfer?", "message_id": "msg-551"})
events, _ := c.RunActions(ctx, convo.ConversationID, out, map[string]texa.ActionHandler{
    "get_transfer_status": func(ctx context.Context, in texa.M) (texa.M, error) {
        return texa.M{"status": "paid_out"}, nil
    },
})
```

## Webhooks

```go
func webhook(w http.ResponseWriter, r *http.Request) {
    raw, _ := io.ReadAll(r.Body)
    event, err := texa.ParseWebhook(os.Getenv("TEXA_WEBHOOK_SECRET"), r.Header, raw)
    if err != nil {
        http.Error(w, "bad signature", http.StatusUnauthorized)
        return
    }
    w.WriteHeader(http.StatusOK)
    go handle(event)
}
```

## Methods

`Me`, `Usage`, `WidgetSession`, `OpenConversation`, `ListConversations`, `GetConversation`,
`SendMessage`, `ActionResult`, `HumanMessage`, `Handover`, `Handback`, `Close`, `Assist`,
`VoiceSession`, `Transcript`, `Export`, `Quality`, `GetCustomer`, `MergeCustomer`, `ForgetCustomer`,
`GetMedia`, `MediaContent`, `GetAgent`, `GetKillSwitch`, `ListActions`, `ListDocuments`,
`AddDocument`, `Events`, `EventsPage`, `PutFixture`, `DeleteFixture`, `RunActions`. Every method takes
a `context.Context` first.
