1. A method of dynamically adding a communication service function using network function virtualization during a communication session, the method comprising: receiving, at a first communication service function executing on a server that comprises a processor, a communication during a communication session on an active connection; detecting, by the first communication service function, a communication service trigger in the communication; determining a second communication service function based on the communication service trigger; determining connection information for the second communication service function; providing, by the first communication service function, the connection information to a controller, wherein the controller sets a session routing protocol for a communication flow for the communication session to include the second communication service function; routing the communication from the first communication service function to the second communication service function; and processing the communication with the second communication service function.