diff --git a/ingestion/source-connectors/zendesk.mdx b/ingestion/source-connectors/zendesk.mdx new file mode 100644 index 00000000..9c76eef1 --- /dev/null +++ b/ingestion/source-connectors/zendesk.mdx @@ -0,0 +1,27 @@ +--- +title: Zendesk +--- + +import NewDocument from '/snippets/general-shared-text/new-document.mdx'; + + + +import SharedContentZendesk from '/snippets/sc-shared-text/zendesk-cli-api.mdx'; + + + +Now call the Unstructured Ingest CLI or the Unstructured Ingest Python library. The destination connector can be any of the ones supported. This example uses the local destination connector. + +This example sends data to Unstructured for processing by default. To process data locally instead, see the instructions at the end of this page. + +import ZendeskSh from '/snippets/source_connectors/zendesk.sh.mdx'; +import ZendeskPyV2 from '/snippets/source_connectors/zendesk.v2.py.mdx'; + + + + + + +import SharedPartitionByAPIOSS from '/snippets/ingest-configuration-shared/partition-by-api-oss.mdx'; + + \ No newline at end of file diff --git a/mint.json b/mint.json index 15f83929..e84bec83 100644 --- a/mint.json +++ b/mint.json @@ -443,7 +443,8 @@ "ingestion/source-connectors/slack", "ingestion/source-connectors/snowflake", "ingestion/source-connectors/sqlite", - "ingestion/source-connectors/wikipedia" + "ingestion/source-connectors/wikipedia", + "ingestion/source-connectors/zendesk" ] }, { diff --git a/snippets/general-shared-text/zendesk-cli-api.mdx b/snippets/general-shared-text/zendesk-cli-api.mdx new file mode 100644 index 00000000..3b3d79c3 --- /dev/null +++ b/snippets/general-shared-text/zendesk-cli-api.mdx @@ -0,0 +1,15 @@ +The Zendesk connector dependencies: + +```bash CLI, Python +pip install "unstructured-ingest[zendesk]" +``` + +import AdditionalIngestDependencies from '/snippets/general-shared-text/ingest-dependencies.mdx'; + + + +The following environment variables: + +- `ZENDESK_SUBDOMAIN` - The subdomain for your Zendesk account, represented by `--subdomain` (CLI) or `subdomain` (Python). +- `ZENDESK_EMAIL` - The login email address for your Zendesk account, represented by `--email` (CLI) or `email` (Python). +- `ZENDESK_API_TOKEN` - The API token (not OAuth token) for your login email address, represented by `--api-token` (CLI) or `api_token` (Python). \ No newline at end of file diff --git a/snippets/general-shared-text/zendesk.mdx b/snippets/general-shared-text/zendesk.mdx new file mode 100644 index 00000000..6f60dfb2 --- /dev/null +++ b/snippets/general-shared-text/zendesk.mdx @@ -0,0 +1,4 @@ +- A [Zendesk account](https://www.zendesk.com/register/). +- Your [Zendesk subdomain](https://support.zendesk.com/hc/en-us/articles/4409381383578-Where-can-I-find-my-Zendesk-subdomain). +- The login email address for your Zendesk account. +- An [API token](https://support.zendesk.com/hc/en-us/articles/4408889192858-Managing-access-to-the-Zendesk-API#topic_tcb_fk1_2yb) (not an OAuth token) for your login email address. \ No newline at end of file diff --git a/snippets/sc-shared-text/zendesk-cli-api.mdx b/snippets/sc-shared-text/zendesk-cli-api.mdx new file mode 100644 index 00000000..86f5c9e9 --- /dev/null +++ b/snippets/sc-shared-text/zendesk-cli-api.mdx @@ -0,0 +1,9 @@ +Connect Zendesk to your preprocessing pipeline, and use the Unstructured CLI or Python to batch process all your documents and store structured outputs locally on your filesystem. + +The requirements are as follows. + +import SharedZendesk from '/snippets/general-shared-text/zendesk.mdx'; +import SharedZendeskCLIAPI from '/snippets/general-shared-text/zendesk-cli-api.mdx'; + + + diff --git a/snippets/source_connectors/zendesk.sh.mdx b/snippets/source_connectors/zendesk.sh.mdx new file mode 100644 index 00000000..57bbbc00 --- /dev/null +++ b/snippets/source_connectors/zendesk.sh.mdx @@ -0,0 +1,19 @@ +```bash CLI +#!/usr/bin/env bash + +# Chunking and embedding are optional. + +unstructured-ingest \ + zendesk \ + --subdomain $ZENDESK_SUBDOMAIN \ + --email $ZENDESK_EMAIL \ + --api-token $ZENDESK_API_TOKEN \ + --batch-size 2 \ + --item-type tickets \ + --output-dir $LOCAL_FILE_OUTPUT_DIR \ + --partition-by-api \ + --api-key $UNSTRUCTURED_API_KEY \ + --partition-endpoint $UNSTRUCTURED_API_URL \ + --chunking-strategy by_title \ + --embedding-provider huggingface +``` diff --git a/snippets/source_connectors/zendesk.v2.py.mdx b/snippets/source_connectors/zendesk.v2.py.mdx new file mode 100644 index 00000000..839e0400 --- /dev/null +++ b/snippets/source_connectors/zendesk.v2.py.mdx @@ -0,0 +1,50 @@ +```python Python Ingest v2 +import os + +from unstructured_ingest.v2.pipeline.pipeline import Pipeline +from unstructured_ingest.v2.interfaces import ProcessorConfig + +from unstructured_ingest.v2.processes.connectors.zendesk import ( + ZendeskIndexerConfig, + ZendeskDownloaderConfig, + ZendeskConnectionConfig, + ZendeskAccessConfig +) + +from unstructured_ingest.v2.processes.partitioner import PartitionerConfig +from unstructured_ingest.v2.processes.chunker import ChunkerConfig +from unstructured_ingest.v2.processes.embedder import EmbedderConfig +from unstructured_ingest.v2.processes.connectors.local import LocalUploaderConfig + +# Chunking and embedding are optional. + +if __name__ == "__main__": + Pipeline.from_configs( + context=ProcessorConfig(), + indexer_config=ZendeskIndexerConfig( + batch_size=2, + item_type=["tickets"] + ), + downloader_config=ZendeskDownloaderConfig(download_dir=os.getenv("LOCAL_FILE_DOWNLOAD_DIR")), + source_connection_config=ZendeskConnectionConfig( + access_config=ZendeskAccessConfig( + api_token=os.getenv("ZENDESK_API_TOKEN") + ), + subdomain=os.getenv("ZENDESK_SUBDOMAIN"), + email=os.getenv("ZENDESK_EMAIL") + ), + partitioner_config=PartitionerConfig( + partition_by_api=True, + api_key=os.getenv("UNSTRUCTURED_API_KEY"), + partition_endpoint=os.getenv("UNSTRUCTURED_API_URL"), + additional_partition_args={ + "split_pdf_page": True, + "split_pdf_allow_failed": True, + "split_pdf_concurrency_level": 15 + } + ), + chunker_config=ChunkerConfig(chunking_strategy="by_title"), + embedder_config=EmbedderConfig(embedding_provider="huggingface"), + uploader_config=LocalUploaderConfig(output_dir=os.getenv("LOCAL_FILE_OUTPUT_DIR")) + ).run() +``` \ No newline at end of file