Рефакторинг кода. Как оптимизировать количество if?
Reflection
Паттерн Стратегия
Вариантов реализации множество, но если по простому, что можно поступить так:
Создать одноименные методы в зависимости от ожидаемых типов, которые может вернуть $message->getType();
И собственно их и вызывать ))
Так вы избавитесь от кучи if и код каждой реализации разместите в свои методы.

Псевдокод:
public function resolve()
{
    // ....

    $type = $message->getType();
    
    // Если такого метода не существует, то можно бросить Исключение или еще как-то обработать ошибку
    // А можно вообще ничего не проверять, а сделать обработку в __call(). Вариантов тоже много
    if (!method_exists($this, $type)) {
        throw new Exception(...);
    }
    
    // Вызвать подходящий метод
    return $this->$type(); //либо call_user_func...()
}

protected function text()
{
    //code
}

protected function poll()
{
    //code
}

protected function image()
{
    //code
}
По примерно такой же схеме можно использовать отдельные классы, сервисы и т.п.