I would recommend using the trigger to broadcast a public variable to all machines that will in turn fire a public variable event handler that will execute the chat script.
1) Add the following to the init.sqf:
// init.sqf
// Add a public variable event handler that will execute chat.sqf when the public variable startChat is broadcasted.
"startChat" addPublicVariableEventHandler {_nul = [] execVM "chat.sqf";};
You can name startChat anything as long as it is a global variable. Just be consistent and use of a tag is recommended
2) Make your trigger activation look like this:
nul = [] execVM "chat.sqf"; startChat = true; publicVariable "startChat";
So, your activation line now does the following. 1. Executes the chat script locally since public variable event handlers do not fire on the same machine that broadcasts the PV. This also ensures SP compatiblity again since PVEHs don't work in SP. 2. Initializes a PV to broadcast. 3. Broadcast the PV so that the PVEH created in the init.sqf will fire and execute chat.sqf on all machines.
This is untested and excuse any typos but should work. Good luck!