Skip to content

Various errors when trying to use GLPI 11 RC5 webhooks #21168

@lucaslevi-consultor-glpi

Description

Code of Conduct

  • I agree to follow this project's Code of Conduct

Is there an existing issue for this?

  • I have searched the existing issues

Version

GLPI 11 RC5

Bug description

Good afternoon everyone, I ran some tests sending call data to an n8n webhook post to see what data would come through, but errors occurred in both attempts. In the first attempt, I tried the new call event, and in the second, the new follow-up , and in both cases, I got this error message:

Image

Some errors appeared in the logs (I'll leave them below).

When I returned to the created webhook, it also displayed an error screen.

Image

In the last test, I saw that there is a button to test the result of the event from a call, which also gave an error in the logs (I will leave it below).

Image

I also noticed that the event was not created in the webhook queue and the webhook cron is running normally every minute.

Relevant log output

Errors that occurred when attempting to send call data (new call and new follow-up) : 

lpi.CRITICAL:   *** Uncaught PHP Exception TypeError: "Webhook::getWebhookBody(): Argument #2 ($api_data) must be of type array, null given, called in ./src/Webhook.php on line 1159" at Webhook.php line 518
  Backtrace :
  ./src/Webhook.php:518                              
  ./src/Webhook.php:1159                             Webhook->getWebhookBody()
  ./src/CommonDBTM.php:1430                          Webhook::raise()
  ./front/ticket.form.php:78                         CommonDBTM->add()
  ...Glpi/Controller/LegacyFileLoadController.php:63 require()
  ./vendor/symfony/http-kernel/HttpKernel.php:181    Glpi\Controller\LegacyFileLoadController->__invoke()
  ./vendor/symfony/http-kernel/HttpKernel.php:76     Symfony\Component\HttpKernel\HttpKernel->handleRaw()
  ./vendor/symfony/http-kernel/Kernel.php:197        Symfony\Component\HttpKernel\HttpKernel->handle()
  ./public/index.php:70                              Symfony\Component\HttpKernel\Kernel->handle()

glpi.WARNING:   *** Warning: Undefined array key "parent" at Webhook.php line 922
  Backtrace :
  ./src/Webhook.php:922                              
  ./src/Webhook.php:941                              Webhook::getAPISchemaBySupportedItemtype()
  ./ajax/webhook.php:173                             Webhook::getMonacoSuggestions()
  ...Glpi/Controller/LegacyFileLoadController.php:63 require()
  ./vendor/symfony/http-kernel/HttpKernel.php:181    Glpi\Controller\LegacyFileLoadController->__invoke()
  ./vendor/symfony/http-kernel/HttpKernel.php:76     Symfony\Component\HttpKernel\HttpKernel->handleRaw()
  ./vendor/symfony/http-kernel/Kernel.php:197        Symfony\Component\HttpKernel\HttpKernel->handle()
  ./public/index.php:70                              Symfony\Component\HttpKernel\Kernel->handle()

glpi.WARNING:   *** Warning: Trying to access array offset on value of type null at Webhook.php line 922
  Backtrace :
  ./src/Webhook.php:922                              
  ./src/Webhook.php:941                              Webhook::getAPISchemaBySupportedItemtype()
  ./ajax/webhook.php:173                             Webhook::getMonacoSuggestions()
  ...Glpi/Controller/LegacyFileLoadController.php:63 require()
  ./vendor/symfony/http-kernel/HttpKernel.php:181    Glpi\Controller\LegacyFileLoadController->__invoke()
  ./vendor/symfony/http-kernel/HttpKernel.php:76     Symfony\Component\HttpKernel\HttpKernel->handleRaw()
  ./vendor/symfony/http-kernel/Kernel.php:197        Symfony\Component\HttpKernel\HttpKernel->handle()
  ./public/index.php:70                              Symfony\Component\HttpKernel\Kernel->handle()

glpi.CRITICAL:   *** Uncaught PHP Exception TypeError: "Illegal offset type" at Webhook.php line 956
  Backtrace :
  ./src/Webhook.php:956                              
  ./ajax/webhook.php:173                             Webhook::getMonacoSuggestions()
  ...Glpi/Controller/LegacyFileLoadController.php:63 require()
  ./vendor/symfony/http-kernel/HttpKernel.php:181    Glpi\Controller\LegacyFileLoadController->__invoke()
  ./vendor/symfony/http-kernel/HttpKernel.php:76     Symfony\Component\HttpKernel\HttpKernel->handleRaw()
  ./vendor/symfony/http-kernel/Kernel.php:197        Symfony\Component\HttpKernel\HttpKernel->handle()
  ./public/index.php:70                              Symfony\Component\HttpKernel\Kernel->handle()

_________________________________________________________

When I attempted to test the event manually within the configuration of the created event:

glpi.CRITICAL:   *** Uncaught PHP Exception TypeError: "Webhook::getWebhookBody(): Argument #2 ($api_data) must be of type array, null given, called in ./src/Webhook.php on line 654" at Webhook.php line 518
  Backtrace :
  ./src/Webhook.php:518                              
  ./src/Webhook.php:654                              Webhook->getWebhookBody()
  ./ajax/webhook.php:137                             Webhook->getResultForPath()
  ...Glpi/Controller/LegacyFileLoadController.php:63 require()
  ./vendor/symfony/http-kernel/HttpKernel.php:181    Glpi\Controller\LegacyFileLoadController->__invoke()
  ./vendor/symfony/http-kernel/HttpKernel.php:76     Symfony\Component\HttpKernel\HttpKernel->handleRaw()
  ./vendor/symfony/http-kernel/Kernel.php:197        Symfony\Component\HttpKernel\HttpKernel->handle()
  ./public/index.php:70                              Symfony\Component\HttpKernel\Kernel->handle()

Page URL

/front/webhook.form.php?

Steps To reproduce

  1. Use GLPI 11 rc5
  2. Activate a webhook with some type of event (new follow-up, new call, etc.)
  3. Define the Post URL that will receive the call data
  4. The expected result would be for the webhook to be sent with the ticket data

Your GLPI setup information

GLPI information
GLPI: 11.0.0-rc5 ( => /var/www/opentime/glpi_11provadefogo)
Installation mode: TARBALL
Current language: pt_BR
Server
Operating system: Linux GLPIAPRESENTACAO 6.14.8-2-pve #​1 SMP PREEMPT_DYNAMIC PMX 6.14.8-2 (2025-07-22T10:04Z) x86_64

PHP: 8.2.29 apache2handler

PHP extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, json, random, Reflection, SPL, session, standard, sodium,
apache2handler, mysqlnd, PDO, xml, bcmath, bz2, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, iconv,
intl, ldap, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer,
xmlreader, xmlwriter, xsl, zip, Zend OPcache

Setup: disable_functions="" max_execution_time="30" max_input_vars="1000" memory_limit="128M" post_max_size="8M"
session.cookie_secure="0" session.cookie_httponly="1" session.cookie_samesite="" session.save_handler="files"
upload_max_filesize="2M"

Web server: Apache/2.4.52 (Ubuntu) (Apache/2.4.52 (Ubuntu) Server at bateriadetestesglpi11.llconsultorias.com.br Port 80)

User agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36

Database:

Server Software: Ubuntu 22.04

Server Version: 10.6.22-MariaDB-0ubuntu0.22.04.1

Server SQL Mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Parameters: glpi_ot_user@localhost/glpi_11provadefogo

Host info: Localhost via UNIX socket

Requirements:
PHP version (8.2.29) is supported.
OS and PHP are relying on 64 bits integers.
Sessions configuration is OK.
Allocated memory is sufficient.
Following extensions are installed: dom, fileinfo, filter, libxml, simplexml, tokenizer, xmlreader,
xmlwriter.
mysqli extension is installed
curl extension is installed
gd extension is installed
intl extension is installed
mbstring extension is installed
zlib extension is installed
bcmath extension is installed
The constant
SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present.
openssl extension is installed
Database engine version (10.6.22) is
supported.
The log file has been created successfully.
Write access to
/var/www/opentime/glpi_11provadefogo/files/_cache has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_cron has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_graphs has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_lock has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_pictures has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_plugins has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_rss has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_sessions has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_tmp has been validated.
Write access to /var/www/opentime/glpi_11provadefogo/files/_uploads has been validated.

Sessions configuration is secured.
exif extension is installed
ldap extension is installed
Following extensions are installed: bz2,
Phar, zip.
Zend OPcache extension is installed
Following extensions are installed:
ctype, iconv, sodium.
Write
access to /var/www/opentime/glpi_11provadefogo/marketplace has been validated.
Timezones seems loaded in database.

GLPI constants
GLPI_ROOT: "/var/www/opentime/glpi_11provadefogo"
GLPI_VERSION: "11.0.0-rc5"
GLPI_SCHEMA_VERSION: "11.0.0-rc5@ea2dbba0e1edbf5128d73bdb23c2c9b9f68468ba"
GLPI_FILES_VERSION: "11.0.0-rc5-e7e0925b"
GLPI_MIN_PHP: "8.2"
GLPI_MAX_PHP: "8.5"
GLPI_YEAR: "2025"
GLPI_I18N_DIR: "/var/www/opentime/glpi_11provadefogo/locales"
GLPI_ENVIRONMENT_TYPE: "production"
GLPI_CONFIG_DIR: "/var/www/opentime/glpi_11provadefogo/config"
GLPI_VAR_DIR: "/var/www/opentime/glpi_11provadefogo/files"
GLPI_MARKETPLACE_DIR: "/var/www/opentime/glpi_11provadefogo/marketplace"
GLPI_ALLOW_IFRAME_IN_RICH_TEXT: false
GLPI_SERVERSIDE_URL_ALLOWLIST: ["^\n (http|https|feed)://
# protocol\n (\n (?:\n
(?:xn--[a-z0-9-]++\.)*+xn--[a-z0-9-]++ # a domain name using punycode\n
|\n (?:[\pL\pN\pS\pM\-\]++\.)+[\pL\pN\pM]++ # a multi-level domain
name\n |\n [a-z0-9\-\
]++
# a single-level domain name\n )\.?\n |
# or\n \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
# an IP address\n | #
or\n \[\n
(?:(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){6})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:::(?:(?:(?:[0-9a-f]{1,4})):){5})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){4})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,1}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){3})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,2}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){2})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,3}(?:(?:[0-9a-f]{1,4})))?::(?:(?:[0-9a-f]{1,4})):)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,4}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,5}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,6}(?:(?:[0-9a-f]{1,4})))?::))))\n
\] # an IPv6 address\n
)\n (?:/ (?:[\pL\pN\pS\pM\-._\
!$&'()+,;=:@]|%[0-9A-Fa-f]{2}) )* # a path\n
(?:\? (?:[\pL\pN\-._\~!$&'\\+,;=:@/?]|%[0-9A-Fa-f]{2}) )? # a query (optional)\n
$~ixuD"]
GLPI_DISALLOWED_UPLOADS_PATTERN: "/\.(php\d*|phar)$/i"
GLPI_TELEMETRY_URI: "https://telemetry.glpi-project.org"
GLPI_INSTALL_MODE: "TARBALL"
GLPI_NETWORK_MAIL: "[email protected]"
GLPI_NETWORK_SERVICES: "https://services.glpi-network.com"
GLPI_MARKETPLACE_ENABLE: 3
GLPI_MARKETPLACE_PRERELEASES: true
GLPI_MARKETPLACE_ALLOW_OVERRIDE: true
GLPI_MARKETPLACE_MANUAL_DOWNLOADS: true
GLPI_USER_AGENT_EXTRA_COMMENTS: ""
GLPI_DOCUMENTATION_ROOT_URL: "https://links.glpi-project.org"
GLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE: "1"
GLPI_LOG_LVL: "warning"
GLPI_SKIP_UPDATES: false
GLPI_STRICT_ENV: false
GLPI_AJAX_DASHBOARD: "1"
GLPI_CALDAV_IMPORT_STATE: 0
GLPI_CENTRAL_WARNINGS: "1"
GLPI_SYSTEM_CRON: false
GLPI_TEXT_MAXSIZE: "4000"
GLPI_WEBHOOK_ALLOW_RESPONSE_SAVING: "0"
GLPI_WEBHOOK_CRA_MANDATORY: false
GLPI_ALTCHA_MODE: "interactive"
GLPI_ALTCHA_MAX_NUMBER: 50000
GLPI_ALTCHA_EXPIRATION_INTERVAL: "PT20M"
GLPI_DOC_DIR: "/var/www/opentime/glpi_11provadefogo/files"
GLPI_CACHE_DIR: "/var/www/opentime/glpi_11provadefogo/files/_cache"
GLPI_CRON_DIR: "/var/www/opentime/glpi_11provadefogo/files/_cron"
GLPI_GRAPH_DIR: "/var/www/opentime/glpi_11provadefogo/files/_graphs"
GLPI_LOCAL_I18N_DIR: "/var/www/opentime/glpi_11provadefogo/files/_locales"
GLPI_LOCK_DIR: "/var/www/opentime/glpi_11provadefogo/files/_lock"
GLPI_LOG_DIR: "/var/www/opentime/glpi_11provadefogo/files/_log"
GLPI_PICTURE_DIR: "/var/www/opentime/glpi_11provadefogo/files/_pictures"
GLPI_PLUGIN_DOC_DIR: "/var/www/opentime/glpi_11provadefogo/files/_plugins"
GLPI_RSS_DIR: "/var/www/opentime/glpi_11provadefogo/files/_rss"
GLPI_SESSION_DIR: "/var/www/opentime/glpi_11provadefogo/files/_sessions"
GLPI_TMP_DIR: "/var/www/opentime/glpi_11provadefogo/files/_tmp"
GLPI_UPLOAD_DIR: "/var/www/opentime/glpi_11provadefogo/files/_uploads"
GLPI_INVENTORY_DIR: "/var/www/opentime/glpi_11provadefogo/files/_inventories"
GLPI_THEMES_DIR: "/var/www/opentime/glpi_11provadefogo/files/_themes"
GLPI_PLUGINS_DIRECTORIES:
["/var/www/opentime/glpi_11provadefogo/marketplace","/var/www/opentime/glpi_11provadefogo/plugins"]
GLPI_NETWORK_REGISTRATION_API_URL: "https://services.glpi-network.com/api/registration/"
GLPI_MARKETPLACE_PLUGINS_API_URI: "https://services.glpi-network.com/api/marketplace/"
Diretórios LDAP
Server: '172.20.1.150',
Port: '389',
BaseDN: 'DC=demoll, DC=local',
Connection filter: '(&(objectClass=user)(objectCategory=person))',
RootDN: '[email protected]',
Use TLS: none
Réplicas SQL
Not active
Notifications
Way of sending emails: SMTP(smtp://glpi1%40llconsultorias.com.br:********@carbonio.npsolucoesinfo.com.br:587)
Name: '[email protected] testes glpi 11 Lab'
Active: No
Server: '{carbonio.npsolucoesinfo.com.br:993/imap/ssl/notls}'
Login: '[email protected]'
Password: Yes
Plugins list
datainjection        Name: Data injection                 Version: 2.15.0-beta2 State: Instalado / não ativado
Install Method: Marketplace
glpiinventory Name: GLPI Inventory Version: 1.6.0-beta1 State: Habilitado
Install Method: Marketplace
tag Name: Tag Management Version: 2.13.0-beta5 State: Habilitado
Install Method: Marketplace

Anything else?

No response

Metadata

Metadata

Assignees

Type

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions