AmmarFahmy
adding all files
105b369
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}")