Spaces:
Runtime error
Runtime error
from phi.tools import Toolkit | |
import json | |
import re | |
try: | |
import requests | |
except ImportError: | |
raise ImportError("`requests` not installed. Please install using `pip install requests`.") | |
class ZendeskTools(Toolkit): | |
""" | |
A toolkit class for interacting with the Zendesk API to search articles. | |
It requires authentication details and the company name to configure the API access. | |
""" | |
def __init__(self, username: str, password: str, company_name: str): | |
""" | |
Initializes the ZendeskTools class with necessary authentication details | |
and registers the search_zendesk method. | |
Parameters: | |
username (str): The username for Zendesk API authentication. | |
password (str): The password for Zendesk API authentication. | |
company_name (str): The company name to form the base URL for API requests. | |
""" | |
super().__init__(name="zendesk_tools") | |
self.username = username | |
self.password = password | |
self.company_name = company_name | |
self.register(self.search_zendesk) | |
def search_zendesk(self, search_string: str) -> str: | |
""" | |
Searches for articles in Zendesk Help Center that match the given search string. | |
Parameters: | |
search_string (str): The search query to look for in Zendesk articles. | |
Returns: | |
str: A JSON-formatted string containing the list of articles without HTML tags. | |
Raises: | |
ConnectionError: If the API request fails due to connection-related issues. | |
""" | |
auth = (self.username, self.password) | |
url = f"https://{self.company_name}.zendesk.com/api/v2/help_center/articles/search.json?query={search_string}" | |
try: | |
response = requests.get(url, auth=auth) | |
response.raise_for_status() | |
clean = re.compile("<.*?>") | |
articles = [re.sub(clean, "", article["body"]) for article in response.json()["results"]] | |
return json.dumps(articles) | |
except requests.RequestException as e: | |
raise ConnectionError(f"API request failed: {e}") | |