There are two types of DIPs: hardcoded and dynamic. Both may exist on your system. The only difference between these two types of DIPs is the manner in which they are assigned their message queue number.
A hardcoded DIP has a pre-defined message queue, or DIP number, in its C-code. Using the hotel example, it is similar to selecting a mailbox without first checking at the registration desk to make sure no other guest is using that mailbox. DIPs reading from the same message queue will interfere with each other.
Dynamic DIPs (DynaDIPs) avoid this type of conflict by asking the voice system for an available message queue at run-time. That is, DynaDIPs do not know what message queue they will have until each time they are run on the voice system. Using the hotel example, it is similar to asking for an available mailbox for a guest, rather than asking for a mailbox number.
Each DynaDIP gives its DIP name and instance number to the system and a unique, unused Qkey is returned. DIPs using the same name receive the same Qkey from which to read, allowing for DIPs that are instances of each other. In this case, the DIPs intentionally read from the same Qkey because they are instances of one another. However, you should avoid having two unrelated DIPs use the same name and then read from the same Qkey. Using unique names instead of numbers (Qkeys 1-213) reduces the chances of clashes between two unrelated DIPs.
Note:
It is strongly recommended that you use DynaDIPs instead of hardcoded DIPs.
Message queue assignments remain in effect and are fixed as long as the voice system is running, despite DynaDIPs dying or respawning. Restarting the voice system removes these assignments, as the name "Dynamic" DIPs stresses the fact that their message queues are dynamically assigned and likely will change across restarts of the voice system.
The voice system allows up to 150 dynamic and 35 hardcoded DIPs. However, the following caveats apply: