# Twilio Conversations client library

Twilio Conversations: Create meaningful connections with customers across various communication channels.
Visit our official site for more detalis: [https://www.twilio.com/conversations](https://www.twilio.com/conversations)

## Instantiating and using

To use the library you need [to generate a token](https://www.twilio.com/docs/conversations/create-tokens) and pass it to the Conversations Client constructor.

### NPM

```
npm install --save @twilio/conversations
```

Using this method, you can `require` `twilio-conversations` and then use the
client:

```
const { Client } = require('@twilio/conversations');

const client = new Client(token);

// Before you use the client, subscribe to the `'initialized'` event.
client.on('initialized', () => {
  // Use the client.
});

// To catch client initialization errors, subscribe to the `'initFailed'` event.
client.on('initFailed', ({ error }) => {
  // Handle the error.
});
```

The SDK could also be imported using the ES module syntax:

```
import { Client } from '@twilio/conversations';

const client = new Client(token);

// Before you use the client, subscribe to the `'initialized'` event.
client.on('initialized', () => {
  // Use the client.
});

// To catch client initialization errors, subscribe to the `'initFailed'` event.
client.on('initFailed', ({ error }) => {
  // Handle the error.
});
```

### CDN

Releases of `twilio-conversations.js` are hosted on a CDN, and you can include these
directly in your web app using a `<script>` tag.

```html
<script src="https://sdk.twilio.com/js/conversations/v2.7/twilio-conversations.min.js"></script>
```

Using this method, `twilio-conversations.js` will set a browser global `Twilio.Conversations` through which you can use the client:

```
const client = new Twilio.Conversations.Client(token);
```

### Security

The CDN consumption described above allows you to consume latest bug fixed versions automatically,
but does not prevent from detecting malicious modifications in the SDK code.

If you require more security you will have to consume SDK by using [SRI](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) and using an exact version
number. While less flexible it is significantly more secure, which is required by some applications.

To consume securely use the following script snippet format:

```html
<script
  src="https://sdk.twilio.com/js/conversations/releases/2.7.0/twilio-conversations.min.js"
  integrity="sha256-<HASH FROM THE CHANGELOGS PAGE>"
  crossorigin="anonymous"
></script>
```

Find the hash of each release published on the [Changelog](#changelog) page.

### Changelog

See this [link](https://www.twilio.com/docs/conversations/javascript/changelog).
