Trigger notifications never arrive inside a backend transaction. Therefore, unless you may be using a nontransaction when a notification arrives, you are free to open a transaction of your own inside your trigger's function invocation operator.
Notifications for your trigger may arrive anywhere within libpqxx code, but be aware that PostgreSQL defers notifications occurring inside transactions. (This was done for excellent reasons; just think about what happens if the transaction where you happen to handle an incoming notification is later rolled back for other reasons). So if you're keeping a transaction open, don't expect any of your triggers on the same connection to be notified.
Multiple triggers on the same connection may have the same name. An incoming notification is processed by invoking all triggers (zero or more) of the same name.