LINUX.ORG.RU

GLPI API

 


0

1

Всем привет! Я обращаюсь за помощью по интеграции API GLPI для создания заявок.

Я успешно настроил интеграцию API, чтобы пользователи могли открывать заявки через бота Telegram. Хотя заявки создаются успешно, я сталкиваюсь с проблемами при заполнении полей «Инициатор запроса» и «Наблюдатель».

Ожидается, что поле «Инициатор запроса» будет заполнено адресом электронной почты, предоставленным пользователем боту Telegram.

Ниже приведен фрагмент кода Python, который я использую для справки:

import requests

GLPI_URL = ‘http://your-glpi-instance/glpi/apirest.php’ GLPI_API_KEY = ‘Your_API_Key’

def init_session(): url = f’{GLPI_URL}/initSession’ headers = { ‘Content-Type’: ‘application/json’, ‘App-Token’: GLPI_API_KEY, ‘Authorization’: ‘user_token Your_User_Token’ }

response = requests.get(url, headers=headers)

if response.status_code == 200:
    session_token = response.json().get('session_token')
    return session_token
else:
    print(f"Error initiating session in GLPI: {response.status_code}, {response.text}")
    return None

def create_ticket(session_token): url = f’{GLPI_URL}/Ticket’ headers = { ‘Content-Type’: ‘application/json’, ‘App-Token’: GLPI_API_KEY, ‘Session-Token’: session_token }

# Specify the user's email as the requester
requester_email = 'user@example.com'

data = {
    'input': {
        'name': 'Sample Ticket',
        'content': 'Description of the sample ticket',
        'requester': {
            'id': 2,  # Replace with the actual user ID (you may need to check in the GLPI database)
            'name': 'User Name',
            'email': requester_email
        },
        'watchers': [
            {'email': 'another@example.com'}
        ]
    }
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 201:
    print("Ticket successfully created in GLPI.")
else:
    print(f"Error creating ticket in GLPI: {response.status_code}, {response.text}")

if name == ‘main’: session_token = init_session()

if session_token:
    create_ticket(session_token)]

Также нашел на каком-то форуме добавление альтернативной почты специалиста назначенного на заявку, но не инициатора запроса

нашел решение на питоне создание заявки выглядит таким образом import requests

GLPI_URL = ‘тут урл’ GLPI_API_KEY = ‘ключ api’

def init_session(): url = f’{GLPI_URL}/initSession’ headers = { ‘Content-Type’: ‘application/json’, ‘App-Token’: GLPI_API_KEY, ‘Authorization’: ‘user_token тут указываете api пользователя’ # Замените на ваши учетные данные в формате Base64 }

response = requests.get(url, headers=headers)

if response.status_code == 200:
    session_token = response.json().get('session_token')
    return session_token
else:
    print(f"Ошибка при инициации сессии в GLPI: {response.status_code}, {response.text}")
    return None

def create_ticket(session_token): url = f’{GLPI_URL}/Ticket’ headers = { ‘Content-Type’: ‘application/json’, ‘App-Token’: GLPI_API_KEY, ‘Session-Token’: session_token }

data = {
    'input': {
        'name': 'Тестовая заявка',
        'content': 'Описание тестовой заявки',
        'requester_id': 8,  # Замените на актуальный идентификатор пользователя
    }
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 201:
    ticket_id = response.json().get('id')
    print(f"Заявка успешно создана в GLPI с ID {ticket_id}.")
    return ticket_id
else:
    print(f"Ошибка при создании заявки в GLPI: {response.status_code}, {response.text}")
    return None

def add_user_to_ticket(session_token, ticket_id): if ticket_id: url_add_user = f’{GLPI_URL}/Ticket/{ticket_id}/Ticket_User/’ headers = { ‘Content-Type’: ‘application/json’, ‘App-Token’: GLPI_API_KEY, ‘Session-Token’: session_token }

    data_add_user = {
        'input': {
            'id': 0,
            'tickets_id': ticket_id,
            'users_id': 0,
            'type': 1,
            'use_notification': 1,
            'alternative_email': 'mail@mail.ru'
        }
    }

    response_add_user = requests.post(url_add_user, headers=headers, json=data_add_user)

    if response_add_user.status_code == 201:
        print("Пользователь успешно добавлен к заявке в GLPI.")
    else:
        print(f"Ошибка при добавлении пользователя к заявке в GLPI: {response_add_user.status_code}, {response_add_user.text}")
else:
    print("Не удалось получить ID заявки для добавления пользователя.")

if name == ‘main’: session_token = init_session()

if session_token:
    ticket_id = create_ticket(session_token)
    add_user_to_ticket(session_token, ticket_id)

во фрагменте data_add_user = { ‘input’: { ‘id’: 0, ‘tickets_id’: ticket_id, ‘users_id’: 0, ‘type’: 1, ‘use_notification’: 1, ‘alternative_email’: ‘mail@mail.ru’ } }

type отвечает за поля Инициатор, Наблюдатель и Назначение специалиста Значения 1- инициатор запроса 2- назначение специалисту 3- наблюдатель

maks011011
() автор топика